已经有C的基础,所以不会特别基础。主要是和C不同的地方。
学习的视频是【零基础 快速学Java】韩顺平 零基础30天学会Java
https://www.bilibili.com/video/BV1fh411y7R8?p=180
Java8:编译时需要先javac text.java,生成一个text.class,然后java text,执行程序。可以分别执行各个类。
java11: 编译时直接 java text,java,会直接生成text,class并运行程序。似乎不可以分别执行各个类,只能执行主类。
+左右是数值则数值相加,有一边是字符串则拼接运算
System.out.println(100 + 8); //108 System.out.println("100" + 8); //1008 System.out.println("hello"+100 + 8); //hello1008
java浮点数默认是double,用float声明要在浮点数后加后缀f(不加会报错),所以一般使用double。
不要用运算结果是小数的进行相等判断,最好用相减的绝对值小于某个精度来处理。
java的字符类型是unicode码
ASCII码,一个字节表示,一共128个字符。
Unicode:固定大小编码, 两个字节表示一个字符。
Utf-8:大小可变的编码,字母使用一个字节,汉字使用3个字节。
gbk:字母一个字节,汉字两个字节。
big5:繁体字
byte,short,char三者进行运算,会自动转换晨int类型。
char c =1; char d = 2; byte e =1; short f = 1; short s1 = f + e; //错误: 不兼容的类型: 从int转换到short可能会有损失 char c1 = c + d ; //错误: 不兼容的类型: 从int转换到char可能会有损失
字符串转基本类型,用库方法。
除法细节
System.out.println(10 / 4); //2 System.out.println(10.0 / 4); //2.5 double d = 10 / 4; System.out.println(d); //2.0
数组的拷贝不能直接将数组的名赋值,拷贝要将值一一赋值。
int[] arr1 = {1, 2, 3}; int[] arr2 = arr1; //将arr1的地址赋给了arr2,arr1和arr2指向同一个地址,修改arr2的值arr1的值也会改变。 arr2[0] = 10; for(int i = 0;i < arr1.length; i++) System.out.println(arr1[i]); //10,2,3
二维数组可以先初始化最高位,再初始化后面的,并且可以不同大小。
一个例子,杨辉三角。这个二维数组的每个一维数组长度都不同。
public class YangHui{ public static void main(String[] args){ int n =10; int [][] yanghui = new int[n][]; for(int i = 0; i < yanghui.length; i++){ yanghui[i] = new int [i+1]; //给每一个二维数组初始化 for(int j = 0; j < yanghui[i].length; j++){ if(j == 0 || j ==yanghui[i].length -1) yanghui[i][j] = 1; //第一列和最后一列都为1 else{ yanghui[i][j] = yanghui [i-1][j] + yanghui[i-1][j-1]; } } } for(int i = 0; i < yanghui.length; i++){ for(int j =0; j < yanghui[i].length; j++) System.out.print(yanghui[i][j]+"\t"); System.out.println(); } } }