java基础(1)IntelliJ IDEA入门和数组操作

一、 IntelliJ IDEA入门

1 快捷键和技巧

智能补全代码,比如只写首字母按回车:

  •   psvm+Enter :public stactic void main(String[] args)
  •   sout+Enter:System.out.println();

快捷键:

  • Alt+4:调出运行框
  • Alt+enter:代码修复,比如导包
  • Ctrl+Y:删除光标所在行
  • Ctrl+D:复制所在行,并插入下一行
  • Ctrl+Alt+L:格式化代码,对齐
  • Ctrl+/:单行注释,再按取消注释
  • Ctrl+Shift+/:注释选中的代码,多行注释,再按取消注释
  • Alt+Insert:自动生成代码,比如toString,get,set方法
  • Alt+Shift+上下箭头:移动代码
  • Shift+F6:替换所选

2 IDEA 常用设置

file\settings\editor可以设置字体

file\settings\keymap\code\completion设置快捷键,比如设置自动补全代码,更换为alt+/

03 idea模块module的导入

file\project structure

二、 java基础

1 .java和.class文件

.java文件是源文件,也就是我们自己写的代码。

.class文件是虚拟机编译得到的,虚拟机需要把我们写的.java文件编译成它可执行的字节码文件

projectname\src文件夹下是.java文件

projectname\out文件夹下是.class文件

javac.exe是JDK的编译器;java.exe是解释器

HelloWorld.java源代码文件:

public class HelloWorld{  }  //文件名和类名需要保持一致

2 方法重载

方法重载:方法的名称一样,参数列表不一样。

如原来的方法int sum(int a,int b)

相关:参数个数int sum(int a,int b,int c);参数类型int sum(int a,double b);参数的多类型顺序int sum(double a, int b)。

无关:参数的名称无关int sum(int x, int y);与返回值类型无关double sum(int a),因为在方法单独调用时,如sum(10,20),不知道该去调用int sum(int a,int b)还是double sum(int a,int b)

3 数组

数组的定义-初始化

动态初始化(指定长度):

格式:  数据类型[ ] 数组名 = new 数据类型[数组长度]

int[] arrayA = new int[30];  //定义一个int型数组,默认初始化为0String[] arrayB = new String[20]; //定义一个String型数组

可以拆分为两个步骤:

int arrayB[];
arrayB = new int[30]; //定义一个int型数组

静态初始化(指定内容):

格式:  数据类型[ ] 数组名 = new 数据类型[数组长度]{元素1,元素2,... }

int [] arrayA = new int[]{5,15,20}
String [] arrayB = new String[]{"Hello","World"}

可以拆分为两个步骤:

int arrayB[];
arrayB = new int[]{10,20,30};
下面是错误写法:int arrayB[];
arrayB[] = new int[]{10,20,30};

省略的静态初始化:

格式: 数据类型[ ] 数组名 = {元素1,元素2,... }

int [] arrayA = {5,15,20}

不能拆分成两个步骤:

int arrayB[];
arrayB = {10,20,30};//错误写法

 

4 数组的内存分析

首先是java的内存分析:

注意:

数组名称是一个局部变量,如int[] array是放在栈中的。

new出来的对象都放在堆中。

数组的内存分析:

//地址赋值
public static void main(String[] args) {    int[] arrayA = new int[3];    arrayA[0]=10;    System.out.println(arrayA[0]);    System.out.println("=========");

int[] arrayB= arrayA;// arrayB存放的地址与arrayA相同,可以通过修改arrayB的值修改arrayA的值。即arrayB是arrayA的引用    arrayB[0]=100;

System.out.println(arrayA);    System.out.println(arrayA[0]);    System.out.println(arrayB);    System.out.println(arrayB[0]);}
//输出

10
=========
[[email protected]
100
[[email protected]
100

数组的名称不变,地址重新赋值:

int[] arrayC = new int[3];
System.out.println(arrayC);//0x666
arrayC = new int[5];//新new了一个数组,地址为0x999,仍然命名为arrayC。
System.out.println(arrayC);//0x999//堆中有了两个实体对象

5 对数组的常见操作方法

//遍历int[] arrayD = new int[]{1,2,3,4};
for(int i=0;i<arrayD.length;i++)   //在idea中快捷输入的方式:array.fori回车
System.out.println(arrayD[i]);
//
1
2
3
4
//求最大值public static void main(String[] args) {
        int[] array = new int[]{1,2,5,8};
        int max = array[0];

        for(int i= 1;i<array.length;i++){
            if(array[i]>max)
                max=array[i];
        }

        System.out.print("max="+max);
    }//max=8
//反转数组public static void main(String[] args) {
        int[] array = {2, 4, 6, 8, 10};
        System.out.println("before reverse:");

        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i]);
            System.out.print(" ");
        }
        for (int min = 0, max = array.length - 1; min < max; min++, max--) {
            int temp = array[min];
            array[min] = array[max];
            array[max] = temp;

        }
        System.out.println("\nafter reverse:");
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i]);
            System.out.print(" ");
            }
        }

//

before reverse:
2 4 6 8 10
after reverse:
10 8 6 4 2

//数组作为参数传递给方法
public class Demo01ArrayParam {
    public static void main(String[] args) {
        int[] array = {10, 20, 30};
        printArray(array);
        int[] array1 = {10*2, 20*2, 30*2};
        printArray(array1);
    }

    public static void printArray(int[] a) {
        for (int i = 0; i < a.length; i++)
            System.out.println(a[i]);
    }
}

//输出结果

10
20
30
20
40
60

//数组作为方法的返回值,返回的其实是数组的地址值
public class Demo01ArrayReturn {    public static void main(String[] args) {        int[] result = calculate(10,20,30);        System.out.println("main方法返回值的地址是"+ result);        System.out.println("总和="+ result[0]);        System.out.println("平均数="+ result[1]);    }

public static int[] calculate(int a, int b,int c) {        int sum = a+b+c;        int avg = sum/3;        int[] array = {sum,avg};        System.out.println("calculate数组的地址是"+ array);        return array;    }}//

calculate数组的地址是[[email protected]
main方法返回值的地址是[[email protected]
总和=60
平均数=20

原文地址:https://www.cnblogs.com/JohnTeslaaa/p/10263090.html

时间: 2024-10-08 01:03:59

java基础(1)IntelliJ IDEA入门和数组操作的相关文章

java基础知识回顾之javaIO类--内存操作流ByteArrayInputStream和ByteArrayOutputSteam(操作字节数组)

直接看代码: package cn.itcast.io.p6.bytestream; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; public class ByteArrayStreamDemo { /** * @param args * @throws IOException * 特点 * 1.内存操作流 * 2.不操作底层资源,不调

java基础 第一章 对象入门

第1章 对象入门 "为什么面向对象的编程会在软件开发领域造成如此震憾的影响?" 面向对象编程(OOP)具有多方面的吸引力.对管理人员,它实现了更快和更廉价的开发与维护过程.对分析与设计人员,建模处理变得更加简单,能生成清晰.易于维护的设计方案.对程序员,对象模型显得如此高雅和浅显.此外,面向对象工具以及库的巨大威力使编程成为一项更使人愉悦的任务.每个人都可从中获益,至少表面如此. 如果说它有缺点,那就是掌握它需付出的代价.思考对象的时候,需要采用形象思维,而不是程序化的思维.与程序化设

Java基础--关于分支、循环、数组的部分练习题及详解

**-----分支题-----** 1.定义一个int类型的变量为x并赋值为5,如果x<10,则让x实现自增,并输出x最后的值. package com.eduask;  //包名 public class Test {   //类 public static void main(String[] args) {  //主函数 int x=5; //声明一个int类型的变量并初始化值为5 if(x<10){  //if分支,如果x的值小于10,x=5,符合题意,进入分支 x++;   //x实

java基础复习(16)-字符串数组交集,并集和差集

package string; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedList; import java.util.Map; import java.util.Map.Entry; import java.util.Set; public class StringArray { public static void main(String[] args) { //测试union Str

Java基础知识强化105:打印数组的方法总结

1. 使用for循环打印数组. 2. 使用Arrays工具类,将数组转化为有序的List打印出来. 3. 使用Arrays工具类,使用Arrays.toString()输出数组内容. 上面三种方法打印数组的示例代码如下: package com.himi.printarray; import java.util.Arrays; public class AnormalArray { public static void main(String[] args) { /** * 使用for循环打印数

java 基础复习 -用Demo去认识数组

前言:数组 是所有编程语言中都会涉及的基础数据类型,但往往在实际开发的时候数组的直接使用还是比较少的,使用的比较多的就是数组的遍历思想,更简单的说对数组对象的for / while 循环. 数组也和类对象都是引用数据类型,这里引用数据类型的根本就是:同一块堆,被不同的栈所指向. A: 什么叫数组? 这个问题看似简单,但是能把数组的基本含义讲清楚的人并不多. 来自百度的解释:所谓数组,是无序的元素序列. 若将有限个类型相同的变量的集合命名,那么这个名称为数组名.组成数组的各个变量称为数组的分量,也

JAVA基础学习(5)之数组

5数组 5.1数组 5.1.1初识数组 1 // 输出大于平均数的所有数 2 Scanner in = new Scanner(System.in); 3 int n; 4 int[] a = new int[100]; 5 int count = 0; 6 double sum = 0; 7 while ((n = in.nextInt()) != -1) 8 { 9 a[count] = n; 10 sum += n; 11 count++; 12 } 13 if (count > 0) 1

黑马程序员——Java基础---IO(二)---IO字节流、流操作规律

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! -------   字节流 一.概述 1.字节流和字符流的基本操作是相同的,但字节流还可以操作其他媒体文件. 2.由于媒体文件数据中都是以字节存储的,所以,字节流对象可直接对媒体文件的数据写入到文件中,而可以不用再进行刷流动作. 3.读写字节流:Inpu

JAVA基础知识之JVM-——使用反射生成并操作对象

Class对象可以获取类里的方法,由Method对象表示,调用Method的invoke可以执行对应的方法:可以获取构造器,由Constructor对象表示,调用Constructor对象的newInstance方法可以执行类对应的构造方法:可以获取成员变量,由Field对象表示,通过Field对象可以直接修改类的成员变量的访问权限和值. 创建对象 通过反射有两种方式创建对象 使用Class对象的newInstance(),这是最常用的方式,根据配置文件信息创建对象. 使用Class对象获取指定