最近在看JAVA教学的视频,觉得老师讲的很好,同时借用源代码还有笔记来撰写本系列博客,记录自己的学习内容,同时也供看到的人学习。
开始写第二篇了哦~
继上篇介绍完JAVA的数值类型后,我们再来看看字符型(char)和布尔变量(boolean)。
上一篇已经提到过JAVA内部采用的字符集是Unicode字符集,每一个字符占据两个字节的大小,这和C++是不一样的哦,除了正常的各国语言的一个字符外,char类型下还有很多特殊功能的字符,下面的代码片段介绍几种经常见到并且实用的。
<span style="font-size:14px;">//测试char
public class TestCharType {
public static void main(String[] args){
char c1 = 'a';
char c2 = '尚'; //unicode 2: 0-65535
char c3 = '\n'; //表示换行符
char c4 = '\''; //用转义字符来输出单引号
char c5 = '\t' //用制表符来拉开固定间距
System.out.print(c1);
System.out.print(c3);
System.out.print(c2);
char c4 = 'a';
int i = c4 + 2; //i是99
char c5 = (char)i; //强制转型(常用在高级别往低级别转)
System.out.println(c5);
//循环打印a-z
for(int j=0;j<26;j++){
char temp = (char)(c4+j);
System.out.print(temp);
}
//java里面的字符串,是定义成:String类了。
String str = "abcdefghijklmnopqrstuvwxyz";
System.out.println("\n"+str);
//boolean类型只有一位
boolean b = false; //false
if(b){
System.out.println("true");
}
}
}</span>
好了,介绍完这四种基本数据类型之后,我们看看它们之间的类型转换吧!
JAVA里面的基本数据类型转换分为自动类型转换与强制类型转换,先来看自动类型转换:
再开看看强制类型转换:
对比上述两种类型转换我们可以得出结论:JAVA转型的原则是不是编程者的数据丢失精度,所以向着大容量数据类型方向转型的就是自动类型转换,而相比之下,强制类型转换则既有“顺流而下”也有“逆流而上”,最大的不同时不考虑精度是否会丢失而只是规定了一个特定的“目的地”。
下面的代码是相应的实现以及两个小的实践题,大家仔细看看哦:
<span style="font-size:14px;">//测试自动转型和强制转型
public class TestCast {
public static void main(String[] args){
/*
byte b = 123;
//byte b2 = 300; 这两个不能转型
//char c = -3;
char c2 = 'a';
int i = c2;
long d01 = 123213;
float f = d01;
//测试强制转型
int i2 = -100;
char c3 = (char)i2; //-100超过char的表数范围(0~65535),所以转换成完全不同的值,无意义的值!
System.out.println(c3);
*/
/*
//表达式中的类型提升问题
int a = 3;
long b = 4;
double d = 5.3;
int c = (int)(a+b); //做所有的二元运算符(+-/*%),都会有类型提升(向容量大的转换)的问题!损失精度的都不会正常进行!
float f = (float)(a + d);
*/
int money = 1000000000; //10亿
int years = 20;
long total = money*years; //注:返回的是负数,因为money和years都是int型,乘完还是int型,已经溢出成为负数,再赋给long型的total也仍然显示为负数!
long total = (long)money*years; //可以只对money进行转型,然后进行自动转型,便可以正常显示
long total = (long)(money*years); //这样返回仍然为负数,原因同第一个
System.out.println(total);
//一个人70年心跳多少次
long times = 70L*60*24*365*70; //同理,其中一个数字(最好不要是最后一个数字)转换为long型
System.out.println(times);
}
}</span>