目录
1.字面常量
常量即程序运行期间,固定保持不变的量。比如一年有四个季节、一年有12个月、一个星期有7天
用代码解释就是
public class Demo{
public static void main(String[] args){
System.Out.println("hello world!");//字符串常量
System.Out.println(3.14);//浮点数常量
System.Out.println('A');//字符常量
System.Out.println(true);//布尔常量
}
输出的helloworld、3.14、A、true都是常量
2.数据类型
在java中数据类型分为基本数据类型和引用数据类型
a.四类:整形、字符型、浮点型、布尔类型
b.八种
ps:a.比C语言中多出了字节型.比字节类型还小的还有bite且
1byte=8bite 1KB=1024byte 1MB=1024KB 1GB=1024MB
注意:1.不管在16位还是32位,int类型都占4个字节,long类型都占八个字节
2.整形和浮点型都是带有符号的
3.整形默认为int类型,浮点型默认为double(使用float时,注意使用规范)
4.字符串为引用类型
3.变量
3.1变量概念
在java中,既有保持不变的量,也有改变的量。比如人的年龄,身高,体重,数学函数等等。
这些经常发生改变的量,在java程序中被称之为变量,而数据类型就是用来定义不同类型的变量的
3.2定义格式
数据类型 变量名=初始值
3.3整型变量
3.3.1整型变量
//1.一种定义方式,直接初始化
int a = 0;
System.Out.println(a);
//2.第二这种定义方式
int b;
b = 0;
System.Out.println(b);
//如若使用第二种定义方式未进行初始化系统会报错
int c;
System.Out.println(c);
//注意赋值时不能超过整型数值的最大范围,下面为int类型的最大值和最小值
System.Out.println(Integer.MIN_VALUE);
System.Out.println(Integer.MAX_VALUE);
//Integer为int类型的包装类型
//举例
int d=1234567890000;
//超出范围则系统报错
注意:
1. int不论在何种系统下都是4个字节
2. 推荐使用方式一定义,如果没有合适的初始值,可以设置为0
3. 在给变量设置初始值时,值不能超过int的表示范围,否则会导致溢出(-2^32-2^32-1)
4. 变量在使用之前必须要赋初值,否则编译报错
5. int的包装类型为 Integer
3.3.2长整型变量
//初始化方式与int类型一致
//以下为注意事项
int a = 5;
long b = 10;
long b = 10l;//为了区分整型和长整形在赋值后面加上l或L
long b = 10L;//推荐使用L 因为1和l类似,不推荐使用
//赋值时也需要注意限定范围
System.Out.println(Long.MAX_VALUE);
System.Out.println(Long.MIN_VALUE);
long c = 1010000000000000000000000;//超出范围系统报错
注意事项:
1. 长整型不论在那个系统下都占8个字节
2. 长整型的表示范围为:(-2^64-2^64-1)
3. long的包装类型为Long
3.3.3短整型变量
//初始化与上述一致
short a = 10;
System.Out.println(a);
// short型变量所能表示的范围:
System.Out.println(Short.MIN_VALUE);
System.Out.println(Short.MAX_VALUE);
//也需要注意赋值大小
注意事项:
1. short在任何系统下都占2个字节
2. short的表示范围为:-32768 ~ 32767
. short的包装类型为Short
3.3.4字节型变量
//初始化与上述一致
byte b = 10;
System.Out.println(b);
// byte型变量所能表示的范围:
System.Out.println(Byte.MIN_VALUE);
System.Out.println(Byte.MAX_VALUE);
注意事项:
1. byte在任何系统下都占1个字节
2. byte的范围是:-128 ~ 127
3. 字节的包装类型为Byte
ps:整型变量的使用由情况而定,选择适合的变量才能更高效的完成作业。
3.4浮点型变量
3.4.1双精度浮点型(double)
//初始化方式有两种这里之后只使用我推荐的方法
double a = 3.14;
System.Out.println(a);
int b = 1;
int c = 2;
System.Out.println(b/c);
//答案不等于0.5,因为除数与被除数定义的都为整数,结果都取整数。
//如果想得到一个0.5,应该定义为double类型
int d = 1;
int e = 2;
System.Out.println(d/e);//输出0.5
int f =1.1;
System.Out.println(f*f);//结果并不会输出1.21,double,小数位精度高,输出为1.2100000000000002
注意事项:
1. double在任何系统下都占8个字节
2. 浮点数与整数在内存中的存储方式不同,不能单纯使用 的形式来计算
3. double的包装类型为Double
4. double 类型的内存布局遵守 IEEE 754 标准(和C语言一样), 尝试使用有限的内存空间表示可能无限的小数, 势 必会存在一定的精度误差,因此浮点数是个近似值,并不是精确值。
3.4.2单精度浮点数(float)
//赋值
float a = 1.7f;//或者为F
System.Out.println(a);
注意
1.在java中,float中占4个字节
2.其包装类型为,Float
3.其精度范围比double小
4. 浮点数与整数在内存中的存储方式不同,不能单纯使用 的形式来计算
3.5字符类型
char ch ='a';//可以是字母
char b = '1';//也可以是字符
//均已单个字母或字符使用''引起来
System.Out.println(a);
Sysout.Out.println(b);
char c = '叒'
Sysout.Out.println(c);//也可以是汉字
注意事项
1.计算机中的数值本质上是整数java中使用Unicode表示字符,故占用两个字节
2.char的包装类型是Character
3.6布尔类型
boolean flga=1;//这种是错误的赋值方法
boolean flga=ture;//正确的复制方法
System.Out.println(flga);
boolean rigth=false;//正确复赋值方法
System.Out.println(right);
注意事项:
1.boolean中只有true和false,表示真和假,没有0为假非0为真的说法。
2.在java虚拟机中中明确规定,boolean没有具体的大小。
4. boolean的包装类型为Boolean。
3.7类型转换
在Java中,当参与运算数据类型不一致时,就会进行类型转换
这里放个引子
int a= 10;
long b = 20;
a = b;//会报错
b = a;//编译通过
为什么呢这里先卖个关子,往下看
3.7.1自动类型转换(隐式)
其概念是:代码不经过任何处理,在编译过程中,编译器自动发生转换;在数据小范围转变到数据范围大时会自动进行处理
int a = 10;
long b =20;
a = b;//将数据大范围的b赋值给a,这时代码是编译不过去的。大到小范围需要强制转化(后面会介绍)
b = a;//小范围a赋值给b,编译器会自动发生转换 int转为long。
//同样的浮点型中
float c = 1.2f;
double d = 2.1;
c = d;//将大范围的数据赋值给小范围的数系统会报错
d = c;//小范围赋值大范围,folat会自动转换为double
System.Out.println(1024);//1024默认为int数据
System.Out.println(3.14);//3.14默认为是double数据,如需要强调是float类型后面需+l或L
byte z = 10;//默认数据为int,但数据为超范围发生隐式转换。上述
byte x =200;//默认为int类型,但是超过byte类型的最大值,编译报错,如需要转换,可强制进行转换,但是可能会发生截断
3.7.2强制类型转换(显示)
概念为:代码需要一定的格式处理,不能自动发生转换。其特点为小范围到大范围
int a = 10;
long b =20;
a = (int)b;//大范围数据赋值小范围数据需要强制转换
b = a;//小范围a赋值给b,编译器会自动发生转换 int转为long。
//同样的浮点型中
float c = 1.2f;
double d = 2.1;
c = (int)d;//将大范围的数据赋值给小范围,需要强制转换
d = c;//小范围赋值大范围,folat会自动转换为double
System.Out.println(1024);//1024默认为int数据
System.Out.println(3.14);//3.14默认为是double数据,如需要强调是float类型后面需+l或L
byte z = 10;//默认数据为int,但数据为超范围发生隐式转换。上述
byte x =(int)200;//默认为int类型,但是超过byte类型的最大值,编译报错,如需要转换,可强制进行转换,但是可能会发生截断
boolean flag = true;
flag = a;//编译失败,类型不匹配
flag = c;//编译失败,类型不匹配
注意:
1.不同数字类型的数据,小范围的数据转换为大范围的数据会隐式发生
2.如需将大范围的数据赋值给小范围的数据需要强制类型转换
3.隐式类型转换不一定成功,两个不相关的数据类型无法完成转换
4.将数据赋值时,java会自动检索数据的范围
3.3.7类型提升
在不同数据类型的运算中,小范围的数据一般会提升为大范围数据之后在进行运算。
int 与 long的运算
int a = 10;
long b = 20;
//int c = a + b;//编译错误
long c = a + b;//编译过程中int提升为long类型之后再进行计算即 int + long->long + long
byte和byte运算
byte a = 10;
byte b = 20;
byte c = a + b;//虽然a 和 b都是byte类型,但是都要先提升为int类型才能进行计算
//报错为:错误: 不兼容的类型: 从int转换到byte可能会有损失
如真的需要为byte类型则强制转换
byte=byte(a + b);
注意:
1.不同数据类型进行计算,小范围数据都会先转换为数据大的类型再进行运算
2.小于2个字节的类型,比如short、byete,都需要提升为int类型再进行计算。
3.8引用类型(浅浅介绍)
3.8.1字符串类型
在java中使用String,定义字符串
public static void main(String[] args) {
String s1 = "hello";
String s2 = " world";
System.out.println(s1);
System.out.println(s2);
System.out.println(s1+s2); // s1+s2表示:将s1和s2进行拼接
}
java中的字符串相较于c语言中,java有个有趣的地方,可以随意拼接,还有字符串和数字之间转换。
a.随意拼接,比如
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println("a=="+a+b);//其输出为a==1020
}
相较于c语言是不是java中的字符串更加方便更加有趣。
b.1. int 转成 String
int num = 10;
// 方法1
String str1 = num + "";
// 方法2
String str2 = String.valueOf(num)
2. String 转成 int
String str = "100";
int num = Integer.parseInt(str);
这是对字符串进行简单的介绍
未完待续
学疏才浅,有错误欢迎指正。