2020/3/17
JAVA定义的数据类型
一、变量按数据类型来分:
基本数据类型:
整型:byte \ short \ int \long
浮点型: float\double
字符型: char
布尔型: boolean
引用数据类型:
类(class)
接口(interface)
数组(array)
二、变量在类中声明的位置:
成员变量 vs 局部变量
1个字节有8,共有pow(2,8)的排列组合
4个字节就有pow(2,4*8)
c
lass VariableTest1{
public static void main(String[] args)
{
//1.整型:byte(1字节=8bit)\short(2字节)\int(4字节)\long(8字节)
// 1>byte范围:-128 ~ 127
byte b1 = 12;
byte b2 = -128;
System.out.println(b1);
// 2>声明long型变量,必须以"l"或"L"结尾
// 3>通常定义整型变量时,使用int型
short s1 = 128;
long l1 = 123143432L;
//2.浮点型:float(4字节)\double(8字节)
double d1 = 123.3;
System.out.println(d1+1);
//定义float类型变量时,变量要以"f"或"F"
float f1 = 12.3F;
System.out.println(f1);
//通常,定义浮点型变量时,使用double型
//3.字符型:char (1字符=2字节)
// 定义char型变量,通常使用一对''(单引号)
char c1 = 'a';
System.out.println(c1);
//表示方式:1.声明一个字符 2.转义字符 3.直接使用Unicode 值来表示字符型常量
char c5 = '\n';
System.out.println("hello"+c5);
System.out.println("world");
char c6='\u0123';//没有对于的字符,显示问号
System.out.println(c6);
//布尔型: boolean
// 只能取两个值之一: true ,false
// 常常在条件判断、循环结构中使用
boolean bb1 = true;
System.out.println(bb1);
}
}
/*
基本数据类型之间的运算规则:
前提:这里只讨论7种基本数据类型变量间的运算,不包含boolean类型的
1.自动类型提升:
结论:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型
byte --> short --> int --> long -->float -->doule
byte、char、short --> int --> long -->float --double
特别的:当byte、char、short三种类型的变量做运算时,结果为int型
说明:此时的容量大小指的是,表示数的范围的大和小,比如,float容量大于long的容量
强制类型转换:自动类型提升运算的逆运算.
1.需要使用强转符:()
2.注意点:强制类型转换,可能导致精度损失
String 类型变量的使用
1.String 属于引用数据类型
2.声明String 类型变量时,使用一对""(双引号)
3.String可以和8种基本数据类型变量做运算,且运算只能是连接运算: +
4.运算的结果仍然是String类型
判断对错
String str1 = 4; //判断对错:no
String str2 = 3.5f + "";//判断对错:yes 输出"3.5"
System.out.println(3+4+"hello!"); //输出7hello!
System.out.println("hello!"+3+4); //输出hello!34
System.out.println('a'+1+"hello!"); //输出98hello!;
System.out.println("hello"+'a'+1); //输出helloa1
练习2 判断能否通过编译
1> short s = 5;
s = s-2 //no
2> byte b = 3;
b = b+4; //no
b = (byte)(b+4); //yes
3> char c = 'a';
int i =5;
float d = .314f;
double result = c+i+d; //yes
4>byte b =3;
short s = 3;
short t = s+b; //no
计算机中不同进制的使用说明:
对于整数,有四种表示方式:
1>二进制,0b或0B;
2>八进制,以数字0开头表示
3>十进制
4>16进制,以0x或0X表示
class VariableTest2{
public static void main(String[] args){
byte b1 = 2;
int i1 = 12;
//编译不通过
//byte b2 = b1+i1;
int i2 = b1 + i1;
System.out.println(i2);
float f = b1+i1;
System.out.println(f);
//*************************
char c1 = 'a'; //97
int i3 = 10;
int i4 = c1+i3;
System.out.println(i4);
short s2 = 10;
//编译不通过
//short s3=c1 + s2;
byte b2 = 10;
//char c3 = c1+b2;//编译不通过
}
}
class VariableTest3
{
public static void main(String[] args)
{
double d1 = 12.3;
int i1 = (int)d1;//截断
System.out.println(i1);
//编译失败
//float f1 = 12.3
//整型常量,默认类型为int型
//浮点型常量,默认类型为double型
byte b = 12;
// byte b1 = b+1;//编译失败
//float f1 = b+12.3;//编译失败
}
}
class StringTest{
public static void main(String[] args)
{
String s1 = "Hello World!";
System.out.println(s1);
String s2 = "a";
System.out.println(s2);
String s3 = "";
System.out.println(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 A65
int num = 10;
String str = "hello1";
System.out.println(c+num+str);//107hello1
System.out.println(c+str+num);//ahello110
System.out.println(c+(num+str));//a10hello1
System.out.println((c+num)+str);//107hello1
System.out.println(str+num+c);//hello110a
//练习2
//* *
System.out.println("* *");//输出 * *
System.out.println('*'+'\t'+'*');//输出 93
System.out.println('*'+"\t"+'*');//输出 * *
System.out.println('*'+'\t'+"*");//输出 51*
System.out.println('*'+('\t'+"*"));//输出 * *
byte b = 3;
byte b11 = (byte)(b+3);
System.out.println(b11);
}
}