二 变量
1.变量
三个基本要素:类型+名称+值
变量的使用 | 例子 |
---|---|
声明变量 | int a; |
赋值 | a=50; |
使用 | System.out.println(a); |
2.程序中的+怎么使用
1.左右两边都为数值型时,做加法运算
2.左右两边有一方做字符串时,做拼接运算
3.运算顺序:从左到右
System.out.println(2+3); //5
System.out.println("5"+4); //54
System.out.println("10"+4+7); //1047
System.out.println(3+9+"9"); //129
3.数据类型
3.1整数类型
默认int型,声明long型常量后需加l或L
3.2浮点型
浮点数=符号位+指数位+尾数位
尾数部分可能丢失,造成精度损失
1.默认double型,声明float型常量后加f或F
2.浮点型常量的两种表示形式:
- 十进制
- 5.12
- 5.1f
- .512(0.512)
- 科学计数法
- 5.12e2(5.12*10的2次)
- 5.12E-2(5.12/10的-2次)
3.通常double比float更精确
3.3字符型
char是2个字节
存放单个字符
可以进行运算,相当于一个整数(Unicode码)
System.out.println('a'+5);//97+5=102
char a='b'+5; //98+5=103
System.out.println(a);//103对应的ASCII表
3.3.1ASCII码
一共有128个字符
只用了一个字节的后7位,第一位规定位0
一个字节可以表示256个字符
3.3.2Unicode码
把世界上所有的符号都纳入其中
一个英文字母和一个汉字都占用2个字节
Unicode码兼容ASCII码
3.3.3UTF-8编码
可以使用1-6个字节表示一个符号,根据不同的符号去变化字节的长度
字母占1个字节,汉字占3个字节
3.4布尔类型:boolean
只允许取值true和false
占一个字节
适用于逻辑运算,一般用于程序流程控制
3.5基本数据类型转换
3.5.1自动类型转换
精度小的可以自动转换为精度大的数据类型
int num = 'a';
double c = 60;
System.out.println(num); //97
System.out.println(c); //60.0
1.多种数据类型混合运算时,系统会先自动将所有数据类型转换为容量最大的类型,然后再计算
int num=10;
float a=num+1.1;// × 结果是double型
float a=num+1.1f;// ✓ 结果是float型
2.byte,short,char不能相互自动转换
3.当把具体数值赋给byte时,先判断是否在byte范围内,如果在就可以
byte a = 12;// ✓ -128~127
int b = 14;//b是int型
byte c = b;// × 变量赋值,要判断类型
4.byte,short,int单独或混合运算后结果都是int型
byte n1 = 1;
byte n2 = 2;
short n3 = 1;
short n = n1 + n3;// × 结果是int型
int a = n1 + n3;// ✓
byte n4 = n1 + n2;// × 结果是int型
5.boolean不参与自动类型转换
3.5.2强制类型转换
容量大的转换为容量小的数据类型
强制转换符( ),可能造成精度丢失
3.5.3基本数据类型和String类型的转换
基本–>String:基本类型值+""
int a = 100;
double b = 2.3;
float c = 30f;
boolean d = true;
String n1 = a+"";
String n2 = b+"";
String n3 = c+"";
String n4 = d+"";
System.out.println(n1+" "+n2+" "+n3+" "+n4);
String–>基本数据类型
通过基本类型的包装类parseXX方法
String s1 = "123";
int num1 = Integer.parseInt(s1);//123
double num2 = Double.parseDouble(s1);//123.0
boolean num3 = Boolean.parseBoolean("true");//true
字符串–>字符
把字符串的第一个字符得到
String c = "1234";
System.out.println(c.charAt(0));//'1'
//得到c中第一个字符