类名:以字母开头,后面可以是字母与数字的任意组合。
命名规范:以大写字母开头,名字由多个单词组成,每个单词第一个字母都大写
Main方法必须是public,Java每个应用程序必须有一个main方法
8种基本数据类型:
整型:byte(1)、short(2)、int(4)、long(8字节)
byte、short用于底层文件处理,存储空间宝贵的大数组
长整型数值后加一个后缀L或l(如400000000L);十六进制加前缀0X或0x(如0xCAFE);八进制加前缀0(如010对应十进制8);二进制加前缀0b或0B(如0b1001对应十进制的9)。
浮点类型:float(4)、double(8字节) 表示有小数部分的数值,默认double类型,float类型加后缀F或f
NaN:不是一个数字 0/0、负数的平方根结果都是NaN
char类型:字面量值用单引号’ ’括起来 转义字符:\n换行,\r回车
boolean类型:true、false
变量:以字母开头,变量先声明再初始化,未初始化的变量不可以使用
常量:final int X = 10 一旦赋值不能更改,一般常量名全大写。类常量定义在mian方法的外部,同一个类中其他方法可以使用这个常量。常量为public,则其他类中的方法可以使用这个常量。
枚举类型:自定义类型。
数据类型转换:实线表示无信息丢失的转换、虚线表示可能有精度损失的转换。
自动类型转换:两个数中有一个double,另一个数自动转换为double;有一个是float,自动转换为float;有一个是long,自动转换为long;否则,两个都被转为int
强制类型转换:int nx = (int)x
自增、自减:在表达式中,++n:原来的n先加一,再用加1之后的n计算;n++:用原来的n先计算,后加一。 n = 7 a = 2 * ++n = 16 n = 8 a = 2 * n++ = 14 n = 8
运算符优先级:
字符串:String
substring提取子串:String m = “hello”; String s = m.substring(0,3); //hel(包括0不包括3,长度为3)
字符串拼接用 + :一般用在输出语句中,当字符串与非字符串拼接时,非字符串自动转换为字符串
检测两个字符串是否相等:s.equals(t):判断s和t两个字符串是否相等,不能用==判断
如果不区分大小写:s.equalsIgnoreCase(t)
拼接和提取得到的字符串是不共享的,只有字符串字面量是共享的。
空串、null串:长度为0的字符串,是一个java对象;String变量可以存一个特殊值,名为null,表示没有任何对象与该变量关联。检查是否为null:if(str == null),检查一个字符串既不是null也不是空串:if(str != null && str.length() != 0) null值调用方法会报错。
String API(应用编程接口)
API:http://docs.oracle.com/javase/9/docs/api Java api
字符串拼接会构建一个新的String对象,可以用StringBuilder类避免这个问题发生:
创建一个空的字符串构建器:StringBuilder builder = new StringBuilder();
需要添加内容时:builder.append(ch)//append a character
builder.append(str)//append a string
构建完成后调用toString方法,得到一个String对象
控制台输入:
Scanner scanner = new Scanner(System.in);
System.out.println("What's your name?");
// 读取一行
String name = scanner.nextLine();
// 读取一个单词
// String firstName = scanner.next();
// 读取一个整数
System.out.println("How old are you?");
int age = scanner.nextInt();
// 打印输出
System.out.println("Hello, " + name + age);
Console???
格式化输出:System.out.printf(“%8.2f”,x); x = 10000.0 / 3.0
结果:共8个字符,包括一个前导的空格和7个字符(字符包括小数点),精度为小数点后2位 3333.33
System.out.printf(“Hello,%s. Next year, you’ll be %d”,name,age)
%s:用字符串替换,%f:用浮点数替换,%d:用十进制整数替换,%tc:时间
文件输入输出:
读取一个文件:
Scanner scanner = new Scanner(Path.of("myfile.txt"), StandardCharsets.UTF_8);
写入文件:
PrintWriter out = new PrintWriter(“myfile.txt”, StandardCharsets.UTF_8);
while (条件) { } 可能一次也不执行
do { } while(条件) 至少执行一次
for(int i = 1; i <= 10; i++) { } for循环 i如果要在循环体外使用,就要在循环体
外声明
for each循环(泛型循环):for(变量:集合) { }
switch(条件){case char/byte/short/int/String: .. break; .. default: .. break;}
退出循环语句:break
将控制转移到最内层循环的首部:continue语句
大数
数组:int[] a = new int[100] 100个整数的数组,数组长度不可变
int[] b = {2,3,5,7,11,13}
数组拷贝:允许将一个数组变量拷贝到另一个数组变量,两个数组变量引用同一个数组
将一个数组所有值拷贝到一个新数组中,使用Arrays类的Arrays.copyOf()
可以增加数组的长度,如果是数值型,额外的元素被赋值为0,boolean被赋
值为false。
数组排序:Arrays.sort(数组名)
多维数组