变量的使用
1.变量的分类
1.1 按数据类型分类
详细说明:
//1.整型:byte(1字节: -128 ~ 127) \ short(2字节) \ int(4字节) \ long(8字节)
// 开发中,常用的整型是:int
// 定义long型变量,需要以"L"或"l"结尾
//整型的常量,规定为int类型
//2.浮点型:float(4字节) \ double(8字节)
//定义float型变量,需要以"F"或"f"结尾
//开发中,常用的整型是:double
//从表数范围上来说,float的范围要大于long
//浮点型的常量,规定为double类型
//3.字符型:char(2字节)
//用来表示一个字符,此字符可以是英文字符、中文字符、数字、日文字符、…
//通常使用一对’'引起来
//4.布尔型:boolean
//boolean类型只能取值为true 或 false
//常用来进行条件判断、循环判断等操作
class VariableTest1 {
public static void main(String[] args) {
//1.整型:byte(1字节: -128 ~ 127) \ short(2字节) \ int(4字节) \ long(8字节)
// 开发中,常用的整型是:int
// 定义long型变量,需要以"L"或"l"结尾
byte b1 = 127;
//b1 = 128;
short s1 = 4344;
int i1 = 32432432;
long l1 = 2353452432L;
System.out.println("b1 = " + b1);
System.out.println("s1 = " + s1);
System.out.println("i1 = " + i1);
System.out.println("l1 = " + l1);
//2.浮点型:float(4字节) \ double(8字节)
//定义float型变量,需要以"F"或"f"结尾
//开发中,常用的整型是:double
//从表数范围上来说,float的范围要大于long
float f1 = 242.33f;
double d1 = 23423423.3423;
System.out.println("f1 = " + f1);
System.out.println("d1 = " + d1);
//3.字符型:char(2字节)
//用来表示一个字符,此字符可以是英文字符、中文字符、数字、日文字符、...
//通常使用一对''引起来
char c1 = 'a';
char c2 = '中';
char c3 = '1';
char c4 = 'ス';
//char还可以表示为一个转义字符
char c5 = '\n';
c5 = '\t';
System.out.println("hello" + c5 + "world");
//char还可以表示为一个unicode的数值(了解)
char c6 = '\u3344';
System.out.println(c6);
//4.布尔型:boolean
//boolean类型只能取值为true 或 false
//常用来进行条件判断、循环判断等操作
boolean isYoung = true;
//isYoung = 12;
if(isYoung){
System.out.println("对不起,不能注册结婚。可以多谈谈恋爱");
}else{
System.out.println("恭喜你,可以去成人场所了");
}
}
}
1.2 按声明的位置分类(了解)
2.定义变量的格式:
格式:数据类型 变量名 = 变量值
3.变量使用的注意点:
① 定义的变量,在使用时,只能在其作用域内有效.
作用域:定义变量时,所在的一对{}
② 在相同作用域内,不能定义同名的变量
③ 变量的取值只能在其数据类型允许的值的范围内赋值。
class VariableTest {
public static void main(String[] args) {
//1.变量的声明:数据类型 变量名
int myNum;
//2.变量的赋值:变量名 = 变量值
myNum = 10;
int myAge = 30;
//3.变量的使用
myAge = 20;
//4.不能再定义同名的变量
int myAge = 20;
System.out.println("我的年龄是:" + myAge);
//5.myAge的赋值超出了int的范围
//myAge = 2432536653542353463;//错误的
boolean isMale = true;
//isMale = 10;//错误的
}
public void test(){
//System.out.println("我的年龄是:" + myAge);
}
}
4.基本数据类型变量间运算规则
4.1 涉及到的基本数据类型:
byte \ short \ int \long \float \ double \ char。不包含boolean类型
4.2 自动类型转换(只涉及7种基本数据类型)
容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果为容量大的数据类型。
byte、short、char —> int ----> long ----> float ----> double
注意:此时所说的容量大小,指的是保存数据的范围的大小,不是所占空间字节数的大小。
class VariableTest2 {
public static void main(String[] args) {
byte b1 = 10;
int i1 = 20;
int i2 = b1 + i1;
System.out.println("i2 = " + i2);
short s1 = 10;
float f1 = 12.3F;
double d1 = s1 + f1;
float f2 = s1 + f1;
long l1 = 10L;
float f3 = 12.3F;
float f4 = l1 + f3;
System.out.println("f4 = " + f4);
int i3 = 20;
double d2 = i3;
//**************************************
//特别地:byte、short、char三者之间做运算的话,结果至少为int型
byte bb1 = 10;
short ss1 = 20;
//错误的:
//short ss2 = bb1 + ss1;
int ii1 = bb1 + ss1;
byte bb2 = 30;
//错误的:
//byte bb3 = bb1 + bb2;
char cc1 = 'a';//ascii码:97 'A'的ascii码是:65
//错误的:
//char cc2 = cc1 + bb1;
int ii2 = cc1 + bb1;
System.out.println("ii2 = " + ii2);
}
}
4.3 强制类型转换(只涉及7种基本数据类型):
将容量大的数据类型的变量转换为容量小的数据类型的变量。
1)需要使用强制类型转换符:()
2)强制类型转换,可能会造成精度损失。
class VariableTest3 {
public static void main(String[] args) {
int i1 = 10;
//错误
//byte b1 = i1;
byte b1 = (byte)i1;
System.out.println(b1);
int i2 = 1221;
//精度损失举例:
byte b2 = (byte)i2;
System.out.println(b2);
//精度损失举例:
double d1 = 12.3;
long l1 = (long)d1;
System.out.println(l1);
short s1 = 12;
//正确的,编译通过
int i3 = (int)s1;
char c1 = 'A';
int i4 = c1 + 32;
System.out.println("i4 = " + i4);
char c2 = (char)i4; //(char)(c1 + 32);
System.out.println("c2 = " + c2);
//通常情况下,我们使用一对''声明一个字符。又因为一个字符对应着相应的ascii码,所以我们也可以
//直接使用此ascii码值给char型变量赋值。
char c3 = 97;
System.out.println("c3 = " + c3);
//区分如下的操作
char c4 = 2;
char c5 = '2'; //'2'对应的ascii码是50
int i5 = (int)c5;
System.out.println(i5);
}
}
4.4 String与8种基本数据类型间的运算
1.String是引用数据类型
2.String使用一对""给变量赋值
3.String 与基本数据类型(8种)变量间的运算:只能做 + 连接运算。且运算的结果为String类型
class StringTest {
public static void main(String[] args) {
String s1 = "Hello World!";
String s2 = "a";
String s3 = "";
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
int num1 = 10;
String s4 = s1 + num1;
System.out.println(s4);
boolean b1 = true;
char c1 = 'a';
short ss1 = 123;
String s5 = s2 + num1 + b1 + c1 + ss1;
System.out.println(s5);
//练习1
char myChar = 'a';
int myInt = 10;
String myStr = "hello";
System.out.println(myChar + myInt + myStr);//107hello
System.out.println(myChar + (myInt + myStr));//a10hello
System.out.println(myChar + myStr + myInt);//ahello10
//练习2
//* *
System.out.println("*\t*");
System.out.println('*' + '\t' + '*');
System.out.println('*' + "\t" + '*');
System.out.println('*' + '\t' + "*");
System.out.println("*" + '\t' + '*');
int num2 = 10;
long lnum1 = num2;//自动类型提升
//错误的
//String myStr1 = num2;
String myStr1 = num2 + "";//"10"
//错误的
//int num3 = (int)myStr1;
//超纲:使用Integer的方法将String转换为int
int num3 = Integer.parseInt(myStr1);
System.out.println(num3 + 10);
}
}
System.out.println("*" + '\t' + '*');
int num2 = 10;
long lnum1 = num2;//自动类型提升
//错误的
//String myStr1 = num2;
String myStr1 = num2 + "";//"10"
//错误的
//int num3 = (int)myStr1;
//超纲:使用Integer的方法将String转换为int
int num3 = Integer.parseInt(myStr1);
System.out.println(num3 + 10);
}
}