Java数据类型
注:String不是基本数据类型,在Java中,String属于类。
变量的基本概念
变量相当于内存中一个数据存储空间的表示,可以把变量看作一个房间的门牌号,通过门牌号我们可以找到房间,而通过变量名可以访问变量值。
变量在一个作用域内不能重名
public static void main(String[] args){
int a = 10;
System.out.print(a);
int a = 10;
}
+号的一些使用
从左到右运行
public static void main(String[] args){
System.out.println(100 + "98"); //100转化为字符型 10098
System.out.println("100" + 98); //98转化为字符型 10098
System.out.println(100 + 3 + "hello"); // 103hello
System.out.println("hello" + 100 +3); //hello1003
}
变量默认值
int,short,byte,long 为0。float,double为0.0。char为\u0000,String为null,boolean为false。
JavaAPI
Application Programming Interface——应用程序编程接口,是Java提供的基本编程接口。在线文档地址——在线API中文手册 - 码工具,API用于告诉开发者如何使用这些类,以及这些类里包含的方法。
寻找方法的步骤: 包——类——方法。
整形细节
1.Java各基本数据类型有固定的范围和字段长度,不受具体OS(操作系统)的影响,以保证Java程序的可移植性。
2.Java的整型常量默认为int型,声明long型常量须在后面加上’l’或者’L’。
int a = 100L; //这样的声明是错误的
long b = 100L; //这样的声明是正确的
3.Java程序中变量声明为int型,除非不足以表示大数,才使用long。
4. bit:计算机中的最小存储单位。 byte:计算机中基本存储单元。 1byte = 8 bit。
举例:byte n1 = 3 和 short n2 = 3 的存储方式
byte占据一个字节,数值为3,内容为 00000011 。short占据两个字节,数值为3,内容为 00000000 00000011
浮点细节
1. Java的浮点型常量默认为double型,声明float型常量,需要在后面加上’f’或’F’。
float a = 1.1; //错误
float b = 1.1F; //正确
double c = 1.1; //正确
double d = 1.1F; //正确,d仍然是double类型
double e = 3d; //正确,后面加d就代表double类型
2. 浮点型常量有两种表示形式——1.十进制:5.12 512.0f .512(如果是0.···,那么0可以省略,.512就表示0.512) 需要注意的是,必须有小数点,即使是整数也要加上 ‘.0’ 2.科学计数法表示:5.12e2(即5.1210^2) 5.12E-2(即5.1210^(-2))
3. 正常情况都使用double类型,因为比float类型更准确。
4. 相除陷阱——double类型进行相除的时候,是以精度的方式返回这个值。
double num1 = 8.1/3; System.out.print(num1);
因此,我们对两个数之间的比较,其中有运算结果是小数时要小心,不能用 ‘==’ 来判断是否相等,而是以两个数差值的绝对值,在某个精度范围内判断。
public static void main(String[] args){
double num1 = 2.7;
double num2 = 8.1/3;
if(num1 == num2){//这样的判断方法是错误的
System.out.print("两者相等");
}else{
System.out.print("两者不相等");
}
}
public static void main(String[] args){
double num1 = 2.7;
double num2 = 8.1/3;
if(Math.abs(num1 - num2) < 0.00001){//在这里设置精度,使用取绝对值方法
System.out.print("符合规定精度,两者相等");
}
else{
System.out.print("不符合规定精度,两者不相等");
}
}
当然,如果是查询得到或者是直接赋值的小数,可以直接进行比较。
char细节
1.字符常量是使用单引号括起来的单个字符——比如 char c1 = ‘a’ 。
2.Java中允许使用转义字符 ‘\’ 来将其后的字符转变为特殊字符常量。
char c1 = '\n';
System.out.print("第一句话" + c1 + "第二句话");
3.在Java中,char的本质是一个整数,在输出时对应 Unicode码对应的字符。
Unicode码转换网址——Unicode编码转换 - 站长工具
char c1 = 97;
System.out.println(c1); //输出97号位置对应的字符
char c2 = 'a';
System.out.println((int)c2); //用强制类型转换输出Unicode位置
5.char类型是可以进行运算的,相当于一个整数,因为它对应的有Unicode编码。
char c1 = 'a' + 10;
System.out.println(c1);
char c2 = 'A' + 'B' - 'C';
System.out.println(c2);
char c3 = 10 + 90;
System.out.println(c3);
在进行计算时,字符常量都会变成Unicode编码的数字。
6.字符型储存到计算机时,需要将字符对应的码值找出来,以’a’为例,主要过程:
存储: ‘a’ ==> 码值97 ==> 二进制(1100001) ==> 存储。
读取:二进制(1100001) ==> 97 ==> ‘a’ ==> 显示。
boolean细节
在Java中,不可以用0代替false,也不可以用非0整数代替true,换言之,boolean只有true和false两种值。
字符编码表
1.ASCII
美国制定的一套字符编码(使用一个字节),ASCII一共规定了128个字符的编码,只占用了一个字节的后面9位,最前面的一位统一规定为0。缺点是不能表示所有字符。 注:一个字节可以表示256个字符(2的8次方),ASCII码只用了128个字符(2的7次方)。
2.Unicode
将世界上所有的符号都纳入其中,每一个符号都给予一个独一无二的编码,使用Unicode没有乱码的问题,编码0-127的字符与ASCII的编码一样。共有65536个字符(2的16次方)。缺点:一个英文字母和一个汉字都占用两个字节,浪费存储空间。
3.UTF-8
是互联网中使用最广的一种Unicode实现方式,它可以使用1-6个字节表示一个符号,根据不同的符号而变化字节长度。 字母占一个字节,汉字占3个字节。
4.补充
还有其他的编码方式比如 gbk:可以表示汉字,字母使用一个字节,汉字2个字节。 gb2312:可以表示汉字,但是表示范围和使用频率小于gbk。 big5:表示繁体中文。