Java定义的数据类型
一、变量按照数据类型来分:
基本数据类型:
整型:byte、shor、int、long
浮点型:float、double
字符型:char
布尔型:boolean
1、整型:byte(1字节=8bit)
short(2字节)
int(4字节)
long(8字节)
①byte范围:-128~127
②声明long型变量,必须以“l”或“L”结尾。(不加时将自动转换为int类型,整数大时出现过大整数的编译失败)
③通常,定义整型变量时,使用int型。
2、浮点型:float(4字节)
double(8字节)
①浮点型,表示带小数点的数值。
②float表示数值的范围比long还大。
③定义float类型变量时,变量要以“f”或“F”结尾。(不加编译失败)
④通常,定义浮点型变量时,使用double型。
3、字符型:char(1字符=2字节)
①定义char型变量,通常使用一对’ ',内部只能一个字符。
②表示方式:1.声明一个字符。2.转义字符。3.直接使用Unicode值来表示字符型常量。
4、布尔型:boolean
①只能取两个值之一:true或false。
②常常在条件判断、循环结构中使用。
//基本数据类型的定义演示代码
class VariableTest1 {
public static void main(String[] args) {
byte b1=12;
//①byte范围:-128~127
byte b2=-128;
//byte b3=128;编译不通过,超过范围了。
System.out.println(b1);
System.out.println(b2);
short s1=128;
int i1=1234;
long l1=99999999L;
//②声明long型变量,必须以“l”或“L”结尾。
//③通常,定义整型变量时,使用int型。
System.out.println(s1);
System.out.println(i1);
System.out.println(l1);
double d1=123.4;
System.out.println(d1);
float f1=12.3F;
//定义float类型变量时,变量要以“f”或“F”结尾。
System.out.println(f1);
//通常,定义浮点型变量时,使用double型。
char c1='a';
//c1='ab';(编译不通过)
//①定义char型变量,通常使用一对' ',内部只能一个字符。
char c2='1';
char c3='中';
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
//②表示方式:1.声明一个字符。2.转义字符。
char c4='\n'; //换行符
char c5='\t'; //制表符
System.out.print("hello" + c4);
System.out.println("world");
System.out.print("hello" + c5);
System.out.println("world");
char c6='\u0043';
//3.直接使用Unicode值来表示字符型常量。
System.out.println(c6);
boolean bb1 = true;
System.out.println(bb1);
boolean isMarried = true;
if(isMarried){
System.out.println("你就不能参加\"单身\"party了!\n很遗憾");
//" "内的都是字符,并称为字符串。其中的\n表示换行。
}
else{
System.out.println("你可以试着来参加找找女朋友。");
}
}
}
基本数据类型变量之间的运算规则:
前提:这里讨论只是7种基本数据变量间的运算。不包含boolean类型的。
1、自动类型提:
结论:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。
byte、char、short --> int --> long --> float --> double
特别地:当byte、char、short三种类型的变量做运算时,结果为int型。
说明:此时的容量大小指的是,表示数的范围的大和小。比如float容量要大于long的容量。
class VariableTest2{
public static void main(String[] args){
byte b1 = 2;
int i1 = 129;
int i2 = b1 + i1;
long l1 = b1 + i1;
//byte b2 = b1 + i1;
//编译不通过。
System.out.println(i2);
float f = b1 + i1;
System.out.println(f);
short s1 = 123;
double d1 = s1;
System.out.println(d1);
//************************
char c1 = 'a'; //97
int i3 = 10;
int i4 = c1 + i3;
System.out.println(i4);
short s2 = 10;
//char c2 = c1 + s2; 编译不通过
byte b2 = 10;
//char c3 = c1 + b2; 编译不通过
//short s3 = C1 + b2; 编译不通过
//byete b3 = b1 + b2; 编译不通过
}
}
2、强制类型转换:自动类型提升运算的逆运算。
①需要使用强转符:()
②注意点:强制类型转换,可能导致精度损失。
class VariableTest3 {
public static void main(String[] args) {
double d1 = 12.9;
int i1 = (int)d1;
//截断操作
System.out.println(i1);
//精度损失
long l1 = 123L;
short s1 = (short)l1;
System.out.println(s1);
//没有精度损失
int i2 = 128;
byte b1 = (byte)i2;
System.out.println(b1);
//精度损失
}
}
引用数据类型:
类(class)
接口(interface)
数组(array)
String类型变量的使用:
1、String属于引用数据类型,翻译为:字符串。
2、声明String类型变量时,使用一对“”。
3、String可以和8种基础数据类型变量做运算,且运算只能是连接运算:+。
4、运算的结果仍然是String类型。
class StringTest1{
public static void main(String[] args) {
String s1 = "Hello World!";
System.out.println(s1);
String s2 = "a";
String s3 = "";
//char c = '';
//编译不通过
//******************************
int number = 1001;
String numberStr = "学号:";
String info = numberStr + number;
//+: 连接运算
System.out.println(info);
boolean b1 = true;
String info1 = info + b1;
//+: 连接运算
System.out.println(info1);
//*******************************
//练习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(str + num + c);//hello10a
System.out.println(c + (num + str));//a10hello
System.out.println((c + num) + str);//107hello
//练习2
//输出* *
System.out.println("* *");
System.out.println('*' + '\t' + '*');
System.out.println('*' + "\t" + '*');
System.out.println('*' + '\t' + "*");
System.out.println('*' + ('\t' + "*"));
}
}
二、变量在类中声明的位置:(面向对象部分)
成员变量 VS 局部变量