1. 数据类型
字节型:byte。占用内存:8位->1字节;取值范围:-128~127
短整型:short。占用内存:16位->2字节;取值范围:-32768~32767
整型:int。占用内存:32位->4字节;取值范围:-2147483648~2147483647
长整型:long。占用内存:64位->8字节;取值范围:-9,223,372,036,854,775,808(-2^63)~9,223,372,036,854,775,807(2^63 -1)
单精度浮点型:float。占用内存:32位->4字节;取值范围:+/-3.4E+38F(6~7 个有效位)
双精度浮点型:double。占用内存:64位->8字节;取值范围:+/-1.8E+308 (15 个有效位)
字符型:char。占用内存:16位->2字节;取值范围:ISO 单一字符集
布尔型:boolean。占用内存:8位->1字节;取值范围:true 或 false
2.变量
声明一个变量之后, 必须用赋值语句对变量进行显式初始化 , 千万不要使用未初始化的变量。
常量:final指示常量,关键字 final 表示这个变量只能被赋值一次 。 一旦被赋值之后 , 就不能够再更改了 。习惯上常量名使用全大写。
public class Constants2 {
public static final double CM_PER_INCH = 2.54;
public static void main(String[] args) {
System.out.println(CM_PER_INCH);
}
}
类常量:在一个类中多个方法进行调用。static final 进行设置。
3.运算符
强制类型转换,涉及精度的丢失。
运算符优先级
4.字符串
从概念上讲, Java 字符串就是 Unicode 字符序列 。例如,串 “ Java \ u 2122 ” 由 5 个Unicode 字符 J、 a 、 v 、 a 和™ 。 Java 没有内置的字符串类型 ,而是在标准 Java 类库中提供了一个预定义类, 很自然地叫做 String 。
4.1 子串
子串提取:[0 , 3)
String gr = "Hello";
String s = gr.substring(0, 3);
4.2 在线api
网址:https://docs.oracle.com/javase/8/docs/api/
4.3 构建字符串
按键或文件的多次字符的输入来构建字符串。字符串连接方法时每次都要构建新的String对象,耗时,浪费空间。其他方法:
StringBuilder:只允许单线程的方式执行添加或删除字符。
StringBuilder builder = new StringBuilder();
builder.append("fasdf");
builder.append("1234");
System.out.println(builder.toString());
StringBuffer:允许多线程的方式执行或删除字符。
5. 输入输出
5.1 输入
Scanner scanner = new Scanner(System.in);
// nextLine :读取一行的输入 以空格为分隔符
String name =scanner.nextLine();
int age = scanner.nextInt();
System.out.println("Name:"+name + "Age:"+age);
5.2 输出
double x = 10000.0 / 3;
System.out.printf("%8.2f",x); // 格式化输出:保留两位小数,总共8位,不足前方补0
多个参数的输出:
String name = "Miya";
int age = 12;
System.out.printf("Hello , %s , Next year , you will be %d",name,age);
String me = String.format("Hello , %s , Next year , you will be %d",name,age);
格式化输出的各种标志:
System.out.printf("%,.2f",10000.0/3.0);//逗号进行分割
System.out.println();
System.out.printf("%,(.2f",10000.0/-3.0);// 多个分隔符
输出:
3,333.33
(3,333.33)
输出格式说明符语法:
5.3文件输出
Scanner in = new Scanner(Paths.get("src\\myfile.txt") , "utf-8");
while(in.hasNext()) {
String s1 = in.nextLine();
System.out.println(s1);
}
5.4文件输入
File file = new File("src\\Infile.txt");
PrintWriter printWriter = new PrintWriter("src\\Infile.txt");
printWriter.print("hello!java!");
printWriter.close();
6. 大数值
BigInteger:实现了任意精度的整数运算。
BigDecimal:实现了任意精度的浮点数运算。
方法:add()、multiply()。
7. 数组
数据结构:用于存储同一类型值的集合。
数组声明:int[] a; int a[];
数字数组,多有元素都初始化为0;boolean类型的数组所有元素都初始化为false。
7.1 for each循环
for循环的语句格式为:for(variable : collection) statement
for (int element : a){
System.out.println(element);
}
直接输出数组:
int[] a = {2,3,5,7,11,13};
System.out.println(Arrays.toString(a)); // Arrays.toString()方法直接输出数组
7.2 数组初始化和匿名数组
int[] a = {1,2,3,4,5,6}; // 常规初始化
// 匿名数组
int[] smallPrimes = new int[] {1,2,3,4,5,6,7}
数组长度可以是0,但是和Null不同。
7.3 数组拷贝
在java中允许将一个数组变量拷贝给另一个数组变量,之后,两个变量将应用同一个数组。
int[] luckyNumbers = samllPrimes;
luckyNumbers [5] = 12 ; // 此时,samllPrimes[5]也为12
将数组的所有的元素都拷贝到另一个数组中:Arrays的copyOf方法:
int [] a = {1,2,3,4,5,6,7};
int [] b = Arrays.copyOf(a, 10);
int [] c = Arrays.copyOf(a, 3);
System.out.println(Arrays.toString(b));
System.out.println(Arrays.toString(c));
// 输出:1 2 3 4 5 6 7 0 0 0
// 1 2 3
7.4 数组排序
数值型数组进行排序:Arrays.sort()
int [] a = {1,2,9,8,2,3,7}; Arrays.sort(a); System.out.println(Arrays.toString(a)); 输出: 1 2 2 3 7 8 9
7.5 多维数组
// 多维数组的声明:
int [][] a = new int[10][10];
int [][] b = {
{},
{},
}
// for each 循环输出
for(int[] c : a){
for(int d : c ){
}
}