1.当字符串和其他类型相加时,基本都是字符串,这与运算顺序有关。
2.Java中用ctrl + d 来结束循环输入。
3.nextLine() 遇到空格不会结束。
4.方法重载
4.1. 方法名必须相同
4.2. 参数列表必须不同(参数的个数不同、参数的类型不同、类型的次序必须不同)
4.3. 与返回值类型是否相同无关
两个方法仅仅只是返回值不同,是构不成方法重载的
5.方法签名
在同一个作用域中不能定义两个相同名称的标识符。
比如:方法中不能定义两个名字一样的变量,那为什么类中就可以定义方法名相同的方法呢?
方法签名即:经过编译器编译修改过之后方法最终的名字。具体方式:方法全路径名+参数列表+返回值类型,构成方法完整的名字。
public class Test {
public static int add(int x, int y) {
return x + y;
}
public static double add(double x,double y) {
return x + y;
}
public static void main(String[] args) {
System.out.println(add(1, 2));
System.out.println(add(1.5, 2.5));
}
}
上述代码经过编译之后,然后使用JDK自带的javap反汇编工具查看。
具体操作:1. 先对工程进行编译生成.class字节码文件
2. 在控制台中进入到要查看的.class所在的目录
3. 输入:javap -v 字节码文件名字即可
6.数组
数组的动态初始化
int[]array=newint[10];
数组的静态初始化
int[]array1=newint[]{0,1,2,3,4,5,6,7,8,9};
静态初始化可以简写,省去后面的new 类型[ ]
//注意:虽然省去了newT[],但是编译器编译代码时还是会还原
int[]array1={0,1,2,3,4,5,6,7,8,9};
double[]array2={1.0,2.0,3.0,4.0,5.0};
String[]array3={"hell","Java","!!!"};
动态初始化和静态初始化可以分为两步,但省略格式是不行的。
int[] array;
array = new int[10];
int[]array2;
array2=newint[]{10,20,30};
//注意省略格式不可以拆分,否则编译失败
//int[]array3;
//array3={1,2,3};
7.什么叫局部变量?
局部变量就是定义在方法内部的变量
8.Java帮你实现了一个打印数组的方法
int[] array = new int[]{1,2,3,4,5};
System.out.println(Arrays.toString(array));
10.
11.传引用一定能改变实参的值吗?不一定
public static void func1(int[] array) {
array = new int[]{4,5,6};
}
public static void main(String[] args) {
int a = 3;
int[] array = new int[a];
System.out.println("使用前:" + Arrays.toString(array));
func1(array);
System.out.println("使用后:" + Arrays.toString(array));
}
}
这个是因为形参指向了一个新的对象,并没有指向实参所指向的对象。
12.数组既可以作为参数,也可以作为函数返回值。
13.拷贝数组的方法
14. 二维数组
public static void main(String[] args) {
int[][] array = new int[][]{{1,2,3},{4,5,6}};
System.out.println(array[0]);
System.out.println(array[1]);
}
二维数组本质上也就是一维数组,它的元素里存放的是地址, 这个地址指向的又是另一个一维数组。
Java中不可以省略行,但可以省略列。
15.不规则的二维数组
public static void main(String[] args) {
int[][] array = new int[2][];
array[0] = new int[3];
array[1] = new int[5];
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.print(array[i][j]+ " ");
}
System.out.println();
}
}