变量
变量相当于内存中一个数据存储空间的表示。
基本格式:
int a1 = 1;
char a2 = 1;
float a3 = 2.01f;
double a4 = 3.1415;
+号的使用
首先我们要明白其运算顺序:从左到右。
1.当加号运算符左右两边为数值类型的时候,则做加法运算。
2.当加号运算符左右两边一方为字符串类型的时候,则做拼接运算。
//符号两边为数值
System.out.println(1+2);
//符号两边一边为字符串
System.out.println("a"+1);
System.out.println(1+"a");
//符号两边都为字符串
System.out.println("a"+"b");
3
a1
1a
ab
数据类型
byte | 1字节 | 字节 |
short | 2字节 | 短整型 |
int | 4字节 | 整形 |
long | 8字节 | 长整型 |
float | 4字节 | 单精度浮点数 |
double | 8字节 | 双精度浮点数 |
char | 2字节 | 字符 |
string | 字符串 | |
boolean | 1字节 | 布尔 |
class | 类 | |
interface | 接口 | |
[ ] | 数组 |
注:在内存中,基本单位为字节,更小的单位为比特,一个字节等于八个比特位。
整型类型
整型类型:byte、short、int、long。
int a1 = 1;
byte a2 = 1;
short a3 = 2;
long a4 = 3246865546465l;
注意事项:
1.Java各整形类型有固定的范围和字段长度,不受具体的操作系统的影响,保证Java程序的可移植性。
2.Java的整型常量(具体值)默认为int类型,声明long类型时,常量须后加“L”或“l”;
int a1 = 1;
long a4 = 3246865546465L;
3.Java程序中变量声明为int型,除非不足以表示大数,才使用long。
int类型为整型变量,而long为长整型,int4字节,long8个字节。所以long的存储更大。
4.bit为计算机中的最小存储单位,byte:计算机中基本存储单位,1byte = 8 bit。
浮点类型
浮点类型:float、double。
float a = 1.23f;
double b = 1.23;
注意事项:
1.与整型类似,Java浮点数类型也有固定的范围和字段长度,不受具体的操作系统的影响。(与整型同理)
2.Java浮点数默认的为double类型,声明float类型,需要在常量后面加上‘F’或‘f’。
float a = 1.23f;
3.浮点型常量有两种表示形式:十进制数形式,如:5.23、5.23f、.542(这里表示0.542,零可以省略,但是小数点不能)。科学计数法形式,如:5.23e2[ ]、5.12-E[ ]。
double c = 0.12;
double g = .12;
float d = 0.12f;
float e = .12f;
System.out.println(c);
System.out.println(g);
System.out.println(d);
System.out.println(e);
0.12
0.12
0.12
0.12
4.通常情况下,应该使用double类型,因为它比单精度float类型更为精确。
float a = 1.2323151223454F;;
double b = 1.23548248526348;
System.out.println(a);
System.out.println(b);
1.2323151
1.23548248526348
通过这样比较我们可以看出,我们赋予float类型的值并没有打印完整,但是double就打印完整,由此可以看出double类型更为精准。
5.2.7与8.1/3的比较:我们在现实生活中,将8.1除以3的值与2.7相比较,得出的结论应该是相等的,那么通过计算机程序还会相等吗?
double a = 2.7;
double b = 8.1/3;
if(a == b) {
System.out.println("相等");
}
else {
System.out.println("不相等");
}
不相等
我们通过程序,我们可以看到不相等,那么为什么呢。出现这样的情况是因为我们在存储数据的时候,数据会先转换成二进制数,然后再存储到内存当中,这其中小数的存储就会发生偏差,小数存储不像整数存储,直接转化一个与之相等的二进制数,小数存储转化的可能是一个无线接近与小数的二进制。因此会出现偏差。
字符类型
字符类型:char
char h = 'a';
char r = '人';
char t = 1 ;
char可以表示单个字符。
char是两个字节,一个汉字的存储也占两个字节,char类型可以存放一个汉字。
char也可以存放一个数字,但是输出的时候,不会输出数字,而是输出对应的字符(unicode码表)。
注意事项:
1.字符常量用单引号(‘ ’)括起来单个字符。
char h = 'a';
char r = '人';
char t = 1;
2.Java中允许使用转义字符‘ \ ’将其后面的字符转变为特殊字符型常量。
char k = '\n';
3.在Java中,char的本质上是一个整数,在输出时,是unicode码对应的字符。
char r = 1;
char t = 97;
System.out.println(r);
System.out.println(t);
a
4.可以给char赋一个整数,然后输出的时候,按照对应的unicode 字符输出。
char t = 97;
System.out.println(t);
a
5.char类型是可以进行运算的,相当于一个整数,因为它有对应的unicode码。
char char1 = 'a' + 2;
char char2 = 'a' + 'b';
System.out.println(char1);
System.out.println(char2);
System.out.println((int)char2);
c
?
195
我们来看一下字符类型存储:
字符类型存储到计算机中,需要将字符对应的码值(整数)找出来,例如:
存储:‘ a ’==》码值:97 ==》二进制 ==》存储
读取:二进制 ==》97 ==》‘ a ’==》显示
布尔类型
布尔类型:booleam,返回值或者是判断条件只有true(真)和false(假);
boolean a = true;
boolean b = false;
基本数据类型的转换
基本数据类型的自动转换
当Java程序在进行赋值或运算时,精度小的类型会自动转换为精度大的数据类型。这个就是数据的自动转换。
数据类型按精度(容量)大小进行排序。
//转换1
char->int->long->float->double
//转换2
byte->short->int->long->float->double
注意事项:
1.当出现有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那个数据类型,然后在进行运算。
int a = 1 ;
float b = 3.0f;
double c = 4.0;
//int sum = a+b+c;编译不过去
double sum = a + b + c;
System.out.println(sum);
8.0
2.当我们把精度大的数据类型赋给精度小的数据类型时,会报错,反之就会进行自动类型转换。
int a = 1;
double c = 4.0;
//这样就可以,因为double比int大
double d = a;
//int a = c;(无法赋值,会报错)
3.byte和short类型不会与char类型进行互相自动转换。
4.byte、short、char 他们三者可以计算,在计算的时候会进行转换成int类型。
byte a = 1;
short b = 2;
char c = 1 ;
int sum = a+b+c;
System.out.println(sum);
4
5.boolean类型不参与转换。
6.自动提升原则:表达式结果的类型自动提升为 操作数中最大的类型。
基本数据类型的强制类型转换
自动类型转换的逆过程,将容量大的数据类型转换成容量小的数据类型为数据类型的强制类型转换,使用时加上强制转换符(),但是可能造成精度的降低或者是溢出,需要注意。
//精度下降
int a = (int)1.925;
System.out.println(a);
//正好
int b = 127;
byte c = (byte)b;
System.out.println(c);
//溢出
int d = 128;
byte e = (byte)d;
System.out.println(e);
1
127
-128
注意事项:
1.当进行数据的大小从大到小时,就需要强制类型转换。
2.强转符号只针对最近的操作数有效,往往会使用小括号提升优先级。
//int f = (int)12*1.3+6*2.1;(程序编译失败,报错)
int g = (int)(12*1.3+6*2.1);
double h = 12*1.3+6*2.1;
System.out.println(g);
System.out.println(h);
28
28.200000000000003
3.char类型可以保存int的常量值,但不能保存int的变量值,需要强转。
char c1 = 100;
int m = 100;
//char c2 = m;(报错)
char c3 = (char)m;
System.out.println(c3);
d
4.byte和short类型在进行运算时,当做int类型处理。
字符串类型
字符串类型:String类型。
字符串类型的转换
在程序开发中,我们经常需要将基本数据类型转成String类型。或者是将String类型转换成基本数据类型。
基本数据类型转换到字符串
语法:将基本数据类型的值+“ ”即可。
int x1 = 100;
float x2 = 1.2f;
double x3 = 3.1415;
String str1 = x1 + "";
String str2 = x2 + "";
String str3 = x3 + "";
System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
100
1.2
3.1415
字符串转换到基本数据类型
语法:通过基本类型的包装类调用parseXX方法即可。
基本格式:基本数据类型的大写.parse数据类型(“ 需要转换的数据”);
Byte.parseByte("12");
Integer.parseInt("123");
Short.parseShort("10");
Long.parseLong("2546");
Float.parseFloat("1.2");
Double.parseDouble("3.1415");
Boolean.parseBoolean("true");
Boolean.parseBoolean("false");
字符串与字符的转换
字符就是将字符串中的字符单独取出来。
如有错误,还望指正。