1.数据类型
在 Java 中, 所有的数值类型所占据的字节数量与平台无关;且没有任何无符号(unsigned) 形式的 int、 long、 short 或 byte 类型
4种整型:
类型 | 长度 | 取值范围 | 包装类 |
---|---|---|---|
int | 4字节(32位) | -2的31次方~~2的31次方-1 | java.lang.Integer |
short | 2字节(16位) | -2的15次方~~2的15次方-1 | java.lang.Short |
long | 8字节(64位) | -2的63次方~~2的63次方-1 | java.lang.Long |
byte | 1字节(8位) | -2的7次方~~2的7次方-1 | java.lang.byte |
2种浮点类型:
类型 | 长度 | 取值范围 |
---|---|---|
double | 8字节(64位) | -2的63次方~~2的63次方-1 |
float | 4字节(32位) | -2的31次方~~2的31次方-1 |
常量 Double_POSITIVE_INFINITY、Double.NEGATIVEJNFINITY 和 Double.NaN( 以及相应的 Float 类型的常量)分别表示正无穷大、负无穷大、NaN (不是一个数字)
1种字符类型:char
1种真值类型:boolean
2.变量
int i,j; //可以这样使用
声明一个变量之后,必须用赋值语句对变量进行显式初始化,初始化方式如下:
int i = 0;
int i ; i = 0;
3.常量
final表示这个变量只能被赋值一次,之后不可再被修改,属于常量
final double CM=10;
类常量static final定义在main方法的外部,同类的其他方法可以使用该常量
如果同时被public修饰,那么其他类的方法也可以使用该常量
4.运算符
4.1数值类型之间的转换
实心箭头表示无信息丢失的转换;虚箭头表示可能存在精度丢失
如果两个操作数中有一个是 double类型,另一个操作数就会转换为double类型。
否则,如果其中一个操作数是float类型,另一个操作数将会转换为float类型。
否则,如果其中一个操作数是 long类型,另一个操作数将会转换为 long类型。
否则,两个操作数都将被转换为int类型。
强制类型转换:
double a = 10.1;
int x = (int)a;
自增自减运算:
int a = 2 *++m;// now a is 16,m is 8
int b = 2 *n++;// now b is 14,n is 8
位运算符:
& ("and") | ("or") ^ ("xor") ~ ("not")
<<:左移运算符,num << 1,相当于num乘以2
>>:右移运算符,num >> 1,相当于num除以2
>>>:无符号右移,忽略符号位,空位都以0补齐
运算符 | 结合性 |
---|---|
[ ].( )(方法调用) | 从左向右 |
!~ +±-+(一元运算)-(一元运算)()(强制类型转换) new | 从右向左 |
*/% | 从左向右 |
+ - | 从左向右 |
<< >> >>> | 从左向右 |
< <= > >= instanceof | 从左向右 |
== != | 从左向右 |
& | 从左向右 |
^ | 从左向右 |
或 | 从左向右 |
&& | 从左向右 |
或或 | 从左向右 |
?: | 从左向右 |
= += -= *= /= %= &= ^= <<= >>= >>>= | 从右向左 |
4.2枚举类型
enum Size { SMALL,MEDIUM,LARGE,EXTRA_LARGE };
Size s = Size.MEDIUN;
Size类型的变量只能存储这个类型声明中给定的某个枚举值,或者null值,null表示这个变量没有设置任何值。
4.3字符串
子串:
String greeting = "He11o";
String s = greeting.substring(0,3);
拼接:
String expletive = "Expletive";
String PG13 = "deleted";
String message = expletive + PG13;
任何一个Java对象都可以转化成字符串:
int age = 13;
String rating = "PG" + age;//PG13
如果需要把多个字符串放在一起用一个定界符分隔,可以使用静态join方法:
String al1 = String.join(" / ","S","M","L","XL");
//all is the string "S /M/L/ XL"
检测字符串是否相等:
s.equals(t); s和t可以是变量也可以是字符串常量
"He11o".equals(greeting)
要想检测两个字符串是否相等,而不区分大小写,可以使用equalsIgnoreCase方法
"He11o".equalsIgnoreCase("hello")
空串和NUll串:
空串""是长度为0的字符串,是一个对象,有自己的长度和内容
调用以下代码检查一个字符串是否为空:
if(str.length() == 0) 或 if (str.equa1s(""))
判断是否是null:
if(str == null)
同时判断两种情况,必须先判断null:
if(str != null && str.length() == 0)
所有的字符串都属于接口CharSequence,CharSequence形参可以传入String类型的实参
构建字符串:
StringBuilder builder = new StringBuilder();
builder.append(ch);
String str = builder.toString();
5.输入输出
5.1读取输入
构建Scanner与“标准输入流”System.in关联:
Scanner in = new Scanner(System.in);
String name = in.nextLine();
想读取单词,以空白符为分隔符:
String name = in,next();
5.2格式化输出
用8个字符的宽度和小数点后两个字符的精度打印x
System.out.printf("%8.2f",x)
5.3文件输入与输出
要想对文件进行读取,就需要一个用File对象构造一个Scanner对象:
Scanner in = new Scanner(Paths.get("myfi1e.txt"),"UTF-8");
如果文件名中包含反斜杠符号,就要记住在每个反斜杠之前再加一个额外的反斜杠:
“c:\\mydirectory\\myfile.txt”
6.大数值
BigInteger类实现了任意精度的整数运算,BigDecimal实现了任意精度的浮点数运算。
使用静态的valueOf方法可以将普通的数值转换为大数值:
BigInteger a = BigInteger.valueOf(100);
需要使用大数值类中的add和 multiply等方法处理大数值
BigInteger c = a.add(b);// c = a + b
BigInteger d = c.multiply(b.add(BigInteger.valueOf(2)));//d = c * (b + 2)