变量类型
java 内存中用Unicode表示字符,占2个字节,char
转义字符\ : \u####表示一个Unicode编码的字符
Java13 开始可以用"“”…“”"表示多行字符串(text blocks)
字符串的不可变性,只是指向改变,容易造成内存泄漏
数组
所有元素初始化为默认值,大小不可改,n.length
如果不指定数组大小,int[] ns = new int[] { 68, 79, 91, 85, 62 };编译器自动推算数组大小,简写int[] ns = { 68, 79, 91, 85, 62 };
`
public static void stringTest() {
String[] names = {“ABC”, “XYZ”, “zoo”};
String s = names[1];
names[1] = “cat”;
System.out.println(s); // s是"XYZ"还是"cat"?当然是xyz啦
}`
println=print line
System.out.printf(“%.4f\n”, d); // 显示4位小数3.1416
虽然可以直接用System.in读取输入但是用Scanner更简化,要读取用户输入的字符串,使用scanner.nextLine(),要读取用户输入的整数,使用scanner.nextInt()。
想遍历数组,比如多维数组:Arrays.deepToString(ns)
面向对象基础
一个类通过定义方法,就可以给外部代码暴露一些操作的接口,同时,内部自己保证逻辑一致性
classpath指定jvm查找类的class文件的目录:java -cp .;C:\work\project1\bin;C:\shared abc.xyz.Hello 最好启动jvm的时候指定目录,在系统变量会污染整个环境。不要把任何Java核心库添加到classpath中!JVM根本不依赖classpath加载核心库!jar包实际上就是一个zip格式的压缩文件,而jar包相当于目录。如果我们要执行一个jar包的class,就可以把jar包放到classpath中。高版本的JDK可编译输出低版本兼容的class文件,但需注意,低版本的JDK可能不存在高版本JDK添加的类和方法,导致运行时报错:javac --release 11 Main.java