java中有8种基本类型,分别是byte、short、int、long、float、double、boolean、char。
它们是用来定义和保存数字、单个字符、布尔类型的东西,他们也可以统称为“变量”。
他们的定义方式是:基本类型名 空格 自定义变量名称 等号 数值。如:int sum = 20;
定义方式看下面的例子:
1、新建一个类Test1(或者你自己起名字,以后我不再解释了),并写入以下代码
public class Test1 {
public static void main(String[] args) {
byte b = 3; //范围是-128~127之间。
short s = -200; //短整型,范围是-32768~32767之间。
int i = 1000; //整型,范围是负的2的31次方到正的2的31次方减1。
long l = -999999999; //长整型,范围为负的2的63次方到正的2的63次方减1。
float f = 6.12f; //浮点型,就是带小数点的数。范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。
double d = 1234567890.123456d; //双精度型,就是比float的范围更大的带小数点的数。范围在4.9e-324~1.8e308,赋值时必须在数字后加上d或D。
boolean bool = true; //布尔型,只有true(真)和false(假)两个取值。
char c = 'A'; //用单引号赋值,只能存一个字符。
System.out.println(b);
System.out.println(s);
System.out.println(i);
System.out.println(l);
System.out.println(f);
System.out.println(d);
System.out.println(bool);
System.out.println(c);
}
}
输出:
现在,你已经学到了一种定义变量的方式,那么,这个有什么用呢?你可以用这个来做一个简单的计算题。
比如333.22*(992+33333/233)
public class Test1 {
public static void main(String[] args) {
float a = 333.5f;
int b = 992;
int c = 1231;
int d = 2;
float sum = a * (b + c / d); //定义一个变量sum来接受计算的结果
System.out.println("计算333.5 * (992 + 1231 / 2)");
System.out.println(sum); //第一种计算方式,把计算结果先放进sum中,最后打印sum
System.out.println(a * (b + c / d)); //第2种计算方式,直接在输出的时候计算并打印
}
}
运行之后,打印:
基本类型的定义和使用方式就是这样简单。
简单的代码里面包含有不少规则和编译原理:
1、在上面的代码中,为什么float sum = a * (b + c / d)不建议写为double sum = a * (b + c / d)?
答:在第一个代码中,你可以看到八种基本类型的赋值范围,这样可以根据你的需要去选择,虽然可以用long或double存1,但是范围越大的类型,占的空间越大,随意需要按需选择。在基本类型中,他们之前是可以转换的,一个算式计算完之后,结果会自动转换成高级别的类型。级别的从高到底为:双精度型(double)>浮点型(float)>长整型(long)>整形(int)>byte。上面的算式中包含了整形(b、c、d)、和浮点型(a),其中级别最高的是float,所以最后计算的结果会自动转换成float,需要用float型 接受。另外,用比float级别更高的double也是可以的,你可以试试。参考文章:https://blog.csdn.net/hjgzj/article/details/51699938
2、低级类型是可以直接转换成高级类型吗?
答:首先声明下,基本类型是没有高低级别之分,我说的低级和高级类型, 仅仅是指他们转换的优先级。然后回答这个问题,可以转换,看下面代码
public class Test1 {
public static void main(String[] args) {
int i = 99; //定义一个整形
long l = 888888888888888888l; //定义一个长整形
double d = 9999999999999999999999999d; //定义一个双精度型
float f =3.1415555555555f; //定义一个浮点型
l = i; //把i赋值给l
d = i; //把i赋值给d
f = i; //把i赋值给f
System.out.println(l);
System.out.println(d);
System.out.println(f);
}
}
运行结果:
不同的类型相互赋值就是一个类型转换的过程。
3、高级类型是可以直接转换成低级类型吗?
答:可以的,不过需要显式的加上强转代码。如果你直接按照上面的方法强转,会报错:
你可以把鼠标放在红叉上查看原因或者点击自动修正代码。
代码如下:
public class Test1 {
public static void main(String[] args) {
int i = 99; //定义一个整形
long l = 888888888888888888l; //定义一个长整形
double d = 4234.1312; //定义一个双精度型
float f =3.1415555555555f; //定义一个浮点型
i = (int) l; //把l赋值给i
System.out.println(i);
i = (int) d; //把d赋值给i
System.out.println(i);
i = (int) f; //把f赋值给i
System.out.println(i);
}
}
结果如下:
我们可以看到,强转之后,丢失了精度。
以上,就是本章的学习内容。
以下是扩展内容。
今天写的代码,有很多地方都加了两个斜杠“//”,这种标记叫做“注释”,他是用来解释这行代码 是什么意思的,在程序运行中不会起任何作用,仅仅是给人看的,为了方便看懂代码而写,注释可以写在程序的任何注释。一个程序员应该养成写注释的好习惯,比如一段代码逻辑很复杂,如果不写注释,很可能你明天再看这段代码就不知道是什么意思了。注释分两种,一种叫单行注释,一种叫多行注释,单行注释从这一行的“//”开始,到这一行结束,这部分代码不生效,多行注视从“/**”开始到“*/”结束,这部分代码不生效:
/**
* 这是一个测试类
*/
//类上也可以单行注释
public class Test1 {
/**
* 这是一个main方法,程序从这里开始
* yoyoyo
* 我是多行注视哟
*/
//方法上也可以单行注释
public static void main(String[] args) {
//定义一个变量a(单行注释)
int a = 0;
//System.out.println(a);(单行注释)
System.out.println(a);
}
}
结果只输出了一个0,被注释掉的代码不会运行
eclips小技巧:
单行注释:把鼠标点击到某一行(或者选中多行),Ctrl+/ 重复操作会取消注释,一般用键盘右边的“Ctrl”和键盘右侧Shift左边的“/”会手感好些。
多行注视:输入“/**”,然后回车,eclips会自动补全注释代码。
快捷提示:Alt+/ 例如你输入了“flo”然后Alt+/之后会出现一个选择列表,你用键盘的↑↓去选择一个你想要的,然后回车确认。
你是不是觉得每次输入System.out.println()都很麻烦,其实通过快捷键就很容易,你可以输入syso之后Alt+/,会自动补全后面的。
作业:
1、定义a、b、c三个整形变量,使得a=99999,b=9999999,c=99999999,打印出这三个的乘积,并分析其结果。
2、打印System.out.println(0.1+0.1+0.1); 分析结果的原因。
3、练习int、long、float、double之间的相互转换。
4、练习上面提高的eclips小技巧。
以上有不懂的,学会使用百度来解决问题。
上节作业答案:
public class HelloWorld {
public static void main(String[] args) {
System.out.print("这是斜杠:/\n这是反斜杠:\\\n这是两个反斜杠\\\\\n我要空一行\n\n\"双引号哦\"");
}
}
\n表示输出一个换行、\\表示输出一个\,\"表示输出一个双引号。主要别把斜杠(/)和反斜杠(\)弄混了
————————————————
版权声明:本文为CSDN博主「我纯洁全身都纯洁」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hjgzj/java/article/details/79668897
网友评论