public class DateTypeTest01 {
public static void main(String[] args) {
//定义一个char类型的变量,起名c,同时赋值字符‘a
char c ='a';
System.out.println(c);
//一个中文占用2个字节,char类型正好是2个字节
//所以java中char类型可以 储存一个中文字符
char x ='国';
System.out.println(x);
}
}
关于Java语言当中的char类型:
转义字符:
转义字符出现在特殊字符之前,会将特殊字符转换成普通字符。
n 换行符
t 制表符
' 普通的单引号
\ 普通的反斜杠
" 普通的双引号
public class DateTypeTest03 {
public static void main(String[] args) {
// TODO Auto-generated method stub
char c1 = 'n';
System.out.println(c1);
//依照目前所学知识,以下程序无法编译通过,因为显然是一个字符串,不能使用单引号括起来
//但是经过编译,发现编译通过了,这说明以下并不是一个字符串,而是“一个”字符
//反斜杠在java语言当中具有转义功能
char c2 = 'n';
//println输出之后换行,print表示输出,但是不换行
System.out.print("hello");
System.out.println("world");
System.out.print("hello");
System.out.print(c2);
System.out.println("world");
char x ='t';
System.out.println(x);
//制表符 tab键
//强调: 制表符合空格不同,他们的ASCII不一样,体现在键盘上两个不同的“按键”。
char y = 't';
System.out.println(y);
System.out.print("a");
System.out.print(y);
System.out.println("b");
//要求在控制台上输出“反斜杠字符”
char k ='\';
System.out.println(k);
//在控制台上输出一个普通单引号字符
//char a = ''; //java中不允许这样编写程序,编译报错
//以下编译报错:第一个单引号和第二个单引号配对,最后的单引号找不到另一半
//char a =''';
//System.out.println(a);
//反斜杠具有转义功能,将第二个单引号转换成普通的单引号字符
//第一个单引号和最后单引号配对
char a =''';
System.out.println(a);
char f ='"';
System.out.println(f);
System.out.println(""hellowold"");
//JDK中自带的native2ascii.exe命令,可以将文字转换成Unicode编码形式
//怎么使用这个命令
//在命令行输入native2ascii,回车,然后输入文字之后回车即可得到unicode编码
char q = '中';
System.out.println(q);
//通过:反斜杠u联合起来后面的一串数字是某个文字的Unicode编码
char w ='u4e2d';
System.out.println(w);
}
}
1.java语言当中的“整数型字面值”被默认当做int类型来处理。要让这个“整数型字面值”被当做long
类型来处理的话,需要在“整数型字面值”后面添加 l/L,建议使用大写的L。
关于浮点型数据类型
float 单精度【4个字节】
double 双精度 【8个字节,精度较高】
double的精度太低【相对来说的】,不适合做财务软件。
财务涉及到钱的问题,要求精度较高,所以SUN在基础SE类库当中为程序员准备了精确度更高的类型,
只不过这种类型是一种引用数据类型,不属于基本数据类型,它是:java.math.BigDecimal
其实java程序中SUN提供了一套庞大的类库,java程序员是基于这套基础的类库来进行开发的。
所以陶指导java的SE类库的字节码在哪儿,要知道java的SE类库的原码在哪儿?
* SE类库字节码:C:Program FilesJavajdk1.8.0_161jrelibrt.jar
* SE类库源码:C:Program FilesJavajdk1.8.0_161src.zip
例如: String.java和String.class
我们的(String[] args)中的String使用的就是String.class字节码文件
在java语言当中,所有的浮点型字面值[3.0]默认被当做double类型来处理,
要想盖子面值当做float类型来处理,需要在字面值后面添加F/f
注意:
double和float在计算机存储的时候储存的都是近似值。
在现实时间当中有一些数字是无限循环的,例如:3.333333333333333333333333333
计算机的资源是有限的,用有限的资源存储无限的数据只能存储近似值。
*/
public class DateTypeTest06 {
public static void main(String[] args) {
//3.0是doubule类型的字面值
//d是double类型的变量
//不存在类型转换
double d=3.0;
System.out.println(d);
//float f =5.1;
//5.1是double的字面值
//f是float类型的变量
//大容量转换成小容量需要加强制类型转换符,所以以上程序编译报错
//解决方案:
//第一种方式:强制类型转换
float f = (float) 5.1;
//第二种方式:没有类型转换
float f1 = 5.1f;
System.out.println(f);
}
}
关于布尔型数据类型:
boolean
在java语言当中boolean类型只有两个值:true,false,没有其他值。
不像c语言当中,0和1可以表示假和真。
在底层存储的时候Boolean类型占用1个字节,因为实际存储的时候false底层是0,true底层是1.
布尔类型在实际开发当中非常重要,经常使用在逻辑运算和条件控制语句当中。
public class DateTypeTest07 {
public static void main(String[] args) {
boolean loginSuccess = false;
if(loginSuccess) {
System.out.println("恭喜你,登录成功");
}else {
System.out.println("对不起,用户名不正确");
}
}
}
关于基本数据类型之间的互相转换:转换规则
1.八种基本数据类型当中出布尔类型之外剩下的7种类型之间都可以互相转换
2.小容量向大容量转换,称为自动类型转换,容量从小到大排序:
byte < short < int < long < float < double
char <
注:
任何浮点类型不管占用多少个字节,都比整数型容量大。
char和short课表示的种类数量相同,但是char可以取更大的正整数
3.大容量转换成小容量,叫做强制类型转型转换,需要加强制类型转换符,程序才能编译通过,
但是在运行阶段可以会损失精度,所以谨慎使用。
4.当整数字面值没有超出byte,short,char的取值范围,可以直接赋值给byte,short,char
类型的变量
5.byte,short,char混合运算的时候,各自转换成int类型在做运算。
6.多种数据类型混合运算,先转换成容量最大的那种类型在做运算。
注意:
byte b=3; 可以编译通过,3没有超出byte类型取值范围
int i =10;
byte b =i / 3;编译报错,编译器只检查语法不会“运算”i/3