1.变量的分类
1.1 按数据类型分类
//1. 整型:byte(1字节=8bit) \ short(2字节) \ int(4字节) \ long(8字节)
//① byte范围:-128 ~ 127
// ② 声明long型变量,必须以"l"或"L"结尾
// ③ 通常,定义整型变量时,使用int型。
//④整型的常量,默认类型是:int型
public class ViriableTest {
public static void main(String args[]) {
//1整型:byte(1byte)/short(2byte)/int(4byte)/long(8byte)
byte b1 = 12;
System.out.println(b1);//12
short s1 = 128;
int i1 = 1234;
long l1 = 1234556L;
System.out.println(s1);//128
System.out.println(i1);//1234
System.out.println(l1);//1234556
}
}
- 浮点型:float(4字节) \ double(8字节)
//① 浮点型,表示带小数点的数值
//② float表示数值的范围比long还大
//③ 定义float类型变量时,变量要以"f"或"F"结尾
//④ 通常,定义浮点型变量时,使用double型。
//⑤ 浮点型的常量,默认类型为:double
//2 浮点型
double d1 = 123.1;
System.out.println(d1+1);
float f1 = 12.1F;
System.out.println(f1);
//3. 字符型:char (1字符=2字节)
//① 定义char型变量,通常使用一对’',内部只能写一个字符
//② 表示方式:1.声明一个字符 2.转义字符 3.直接使用 Unicode 值来表示字符型常量
//3 字符型 char(1字符=2字节)
//定义char型变量,通常使用'',内部只能写一个字符
char c1 = 'a';
System.out.println(c1);//a
//表示方式:声明一个字符;转义字符;直接使用Unicode
char c2 = '\n';//换行符
char c3 = '\t';//制表符
System.out.print("hello"+c2);
System.out.println("world");
//4.布尔型:boolean
//① 只能取两个值之一:true 、 false
//② 常常在条件判断、循环结构中使用
//4 布尔类型 boolean
//只能取两个值之一:true false
// \\n == \n 就是字符的意思,不是换行符
boolean bb1 = true;
System.out.println(bb1);//true
2.定义变量的格式:
数据类型 变量名 = 变量值;
或
数据类型 变量名;
变量名 = 变量值;
public class identifierTest {
public static void main(String args[]) {
//定义变量
int myAge = 12;
//变量的使用
System.out.println(myAge);//12
//变量的声明
int myNumber;
//变量的赋值
myNumber = 10086;
System.out.print(myNumber);//10086
}
}
3.变量使用的注意点:
① 变量必须先声明,后使用
② 变量都定义在其作用域内。在作用域内,它是有效的。
③ 同一个作用域内,不可以声明两个同名的变量
4.基本数据类型变量间运算规则
4.1 涉及到的基本数据类型:除了boolean之外的其他7种
4.2 自动类型转换(只涉及7种基本数据类型)
结论:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。
byte 、char 、short --> int --> long --> float --> double
特别的:当byte、char、short三种类型的变量做运算时,结果为int型
说明:此时的容量大小指的是,表示数的范围的大和小。比如:float容量要大于long的容量
public class identifierTest2 {
public static void main(String args[]) {
byte b1 = 2;
int i1 = 1;
int i2 = b1+i1;
long l1 = b1+i1;
System.out.println(i2);//3
System.out.println(l1);//3
}
}
4.3 强制类型转换(只涉及7种基本数据类型):自动类型提升运算的逆运算。
1.需要使用强转符:()
2.注意点:强制类型转换,可能导致精度损失。
public static void main(String args[]) {
double d1 = 12.9;
//精度损失
int i1 = (int)d1;//截断操作 12
System.out.println(i1);
//没有精度损失
long l1 = 123;
short s2 = (short)11;
System.out.println(s2);//123
//精度损失举例2
int i2 = 128;
byte b = (byte)i2;
System.out.println(b);//-128
}
public static void main(String args[]) {
//1 编码情况1:
long l = 1234;//1234实际是被看做整型int
//编译失败:过大的整数
//long l1 = 12345678754234;
long l1 = 12345678754234L;
//***************************
//编译失败
//float f1 = 12.3;//12.3被看做double类型
//2 编码情况2:
//整型常量,默认类型为int型
//浮点型常量,默认类型为double型
byte b = 12;
//byte b1 = b+1;//编译失败
//float f1 = b+12.3;//编译失败
}
4.4 String与8种基本数据类型间的运算
- String属于引用数据类型,翻译为:字符串
- 声明String类型变量时,使用一对""
- String可以和8种基本数据类型变量做运算,且运算只能是连接运算:+
- 运算的结果仍然是String类型
public static void main(String args[]) {
//声明String类型变量时,使用一对"";字符可以是0到多个
String s1 = "hello world";
String s2 = "";
//char c = '';编译不通过
//**********************************
int number = 1001;
String numberStr = "学号:";
//连接运算-运算结果为String
String info = numberStr+number;
System.out.println(info);//学号:1001
}
//练习1
char c = 'a';//97 A:65
int num = 10;
String str = "hello";
System.out.println(c + num + str);//107hello
System.out.println(c + str + num);//ahello10
System.out.println(c + (num + str));//a10hello
System.out.println((c + num) + str);//107hello
System.out.println(str + num + c);//hello10a
//练习二
System.out.println("* *"); //* *
System.out.println('*'+'\t'+'*'); //93
System.out.println('*'+"\t"+'*'); //* *
System.out.println('*'+('\t'+"*"));//* *