为什么需要变量
1.变量是程序的基本组成单位
2.不论是使用那种高级程序语言编写程序,变量都是其程序的基本组成单位。
3.变量三个基本要素(类型 + 名称 +值)
变(变化)量(值)的介绍
数据类型
注:
- String是一个类,属于引用数据类型
- char的本质是一个整数,在输出时,是unicode码对应的字符,char类型是可以进行运算的
- 不可以0或非0的整数替代false和true,这点和C语言不同
字符类型(char)
ASCLL 码介绍
Unicode编码介绍
UTF-8编码介绍
基本数据类型转换
public class AutoConvertDetail{public static void main(String[] args){//细节1:有多种类型的数据混合运算时,//系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算int n1 = 10;// float d1 = n1 + 1.1;//错误 n1 + 1.1 => 结果类型是 double// double d1 = n1 + 1.1;//对 n1 + 1.1 => 结果类型是 doublefloat d1 = n1 + 1.1F;//对 n1 + 1.1 => 结果类型是float//细节2:当我们把精度(容量)大的数据类型赋值给精度(容量)小的数据类型时,//就会报错,反之就会进行自动类型转换。// int n2 = 1.1;//错误 double -> int//细节3:(byte,short)和char之间不会相互自动转换//当把具体数赋值给 byte 时,(1)先判断该数是否在byte范围内,如果是就可以byte b1 = 10; //对,数值范围-128~127// int n2 = 1; //n2是int// byte b2 = n2; //错误,原因:如果是变量赋值,判断类型// char c1 = b1; //错误,原因byte不能自动转换成char//细节4:byte,short,char他们三者可以计算,在计算时首先转换为int类型byte b2 = 1;byte b3 = 2;short s1 = 1;// short s2 = b2 + s1;//错,b2 + s1 => intint s2 = b2 + s1;//对,b2 + s1 => int//byte b4 = b2 + b3;//错误:b2 + b3 => int//细节5:boolean 不参与转换boolean pass = true;//int num100 = pass;// 错误boolean 不参与转换//细节六:自动提升原则:表达式结果的类型自动提升为操作数中最大的类型//看一道题byte b4 = 1;short s3 = 100;int num200 = 1;double num300 = 1.1;int num500 = s3 + num200;//对,short和int运算自动提升为表达式中最大的类型int,可赋值给精度相同的int类型// int num600 = num200 + num300;//错,int和double运算自动提升为表达式中最大的类型double,无法赋值给精度较小的int类型}
}
强类型转换使用细节:
1. 当进行数据的大小从大到小时,就需要用到强制转换。2. 强制符号只针对最近的操作时有效,往往会使用小括号提升优先级、3. char类型可以保存 int 的常量值,但是不能保存 int 的变量值,需要强转。4. byte 和 short ,char 类型在进行运算时,当作 int 类型处理。
char c1 = 100; //正确
int m = 100; //正确
char c2 = m; //错误,因为int类型不能直接自动转换为char类型
char c3 = (char)m; //正确,加了强制类型转换符号()
基本数据类型和String类型的转换
① 基本数据类型转 String 类型
语法:将基本类型的值 + ""即可。
int n1 = 100;
float n2 = 1,1f;
double n3 = 3.4;
boolean b1 true;
char c1 = 'li';
String str1 = n1 + "";
String str2 = n2 + "";
String str3 = n3 + "";
String str4 = b1 + "";
String str5 = c1 + "";
② String类型转基本数据类型
语法:通过基本数据类型的包装类调用parseXX方法即可。
int a = Integer.parseInt("123");
double b = Double.parseDouble("123");
float c = Float.parseFloat("123.45");
short d = Short.parseShort("12");
long e = Long.parseLong("12");
boolean f = Boolean.parseBoolean("true");
byte g = Byte.parseByte("12");//对于字符类型char来说,若有一个字符串S5
S5.charAt(0)//可得到S5字符串的第一个字符