这一个章节我是建议大家,上机自己写写,不知道这几天,大家把Java运行的环境配置好了没有?
至于写代码的工具,你随意,自己用的顺手就行。
先从最小的byte开始
不知道大家还记不记前面写的第一个Java程序,是怎么执行的,是不是通过入口方法mian()进入程序,再执行程序。
所以,要先写一个入口方法,一般入口方法会写在,执行类/是测试类(就是Test类),以idea为例,新建项目
点击进入以后,我们现在就用不同的Java项目就行,一般在写项目的时候,会用到Maven,这个到时候再说。记住在Project SDK选择你安装的jdk,我这里用的1.8。点击下一步,起一个项目名字。
项目新建完成以后,就像这样,我们的代码一般是写在src下,在Java文件夹中右击新建我们写Java代码的地方如图中所示,一般采用域名倒着写,这是啥意思?
如:com.jinanbazirou
com表示商用的,还有org的等等,这个大家自己查一下,像政府的怎么表示,医院的、学校的
然后是公司名。我这写的“济南把子肉”
在我们新建的这个包里面,创建咱们要用到的类,我的执行类是Test,要执行的代码主要放在Xiexhewan,注意类的名字要大写,要用英文(我这里先用拼音演示),这个要遵循阿里巴巴开发手册的规范,养成好的习惯(很重要)
整数型
那么我们试试写一个简单的加法计算程序,先不要想这么多,先让程序跑起来,再优化
public class Tool {
public static void main(String[] args) {
Tool tool = new Tool();
int sum = tool.sum(11, 2);
System.out.println(sum);
}
public int sum(int a,int b){
return a+b;
}
}
其实干活的主要是sum方法,我们是通过main(),建对象调用的。现在先不要想这么多,先将代码写在main方法里面能执行再拿出来,那么问题来了,怎么改一下,让代码执行起来有一样的效果?
public class Tool {
public static void main(String[] args) {
int a = 1;
int b = 2;
int sum = a+b;
System.out.println(sum);
}
}
上面是一个简单的加法测试,我们在上面的这个基础上修改并测试,发现基本数据类型之间的关系
上面的每一句代码不用我在解释了吧 咱们直接干
将上面的a、b的类型改为byte行不行?自己测试一下(运行程序点击绿色的小箭头)
public class Tool {
public static void main(String[] args) {
byte a = 1;
byte b = 2;
int sum = a+b;
System.out.println(sum);
}
}
这是没有问题的 结果等于3
将a+b的和sum改为byte类型可以吗?可以这么写吗?byte sum=a+b; 为什么?
byte不可以,short可以吗? long可以吗? 思考一下为什么有的行有的不行? 自己测试一下
测试完是不是发现了一个规律,sum的类型方式大于等于int(在内存中字节数)都能,只要小于int(在内存中字节数)的都不行。为什么?
是小于等于int的整数类型在计算的时候默认会转化为4个字节进行运算,想一下,一只42码的脚能穿43或者45码的鞋子,他能穿上34码的鞋子吗?就是这个道理
public static void main(String[] args) {
int a = 1;
byte b = 2;
long sum = a+b;
System.out.println(sum);
}
上面的这个是对还是错?错,为什么?对,sum是几?
public static void main(String[] args) {
char a = 97;
byte b = 2;
long sum = a+b;
System.out.println(sum);
}
上面这又是对还是错?等于几呐?
public static void main(String[] args) {
char a = 'a';
byte b = 2;
long sum = a+b;
System.out.println(sum);
}
这个呐?能这么写吗?
字符型
定义:char qq= 'a'; 这个打印出来无疑是 a char qq= '章';?试一下,是不是“章”
整点不一样的
我能不能将qq的值定义成 “张三” ?
不能 , 为什么不能?char只能定义一个字符,无论是英文还是汉字
byte w = 50;
byte t = 47;
char r = w+t;
能这么写吗?为什么?
是不能的,w和t会自动转换成什么在计算?
是先转换成int类型在进行计算,那么计算完的结果是一个int的类型,占4个字节大小,char是几个字节大小(两个),怎么让他行呐?
char r = (char) (w+t); 和你的答案一样吗?这是强转,硬塞,比较暴力,所以不太好,先记住
char a = 100;
System.out.println(a)
char a1='a';
char a2='b';
int s=a1+a2;
System.out.println(s);
这两个出什么?自己猜一下,再试试
记住:大胆猜想,小心验证
浮点型
这等于多少?为什么?精度之前说,这就是不使用它来算钱
public static void main(String[] args) {
float f=2;
System.out.println(f);
}
等于:2.0,因为是浮点型,所以有小数位
1.0,同上面的
public static void main(String[] args) {
int a = 1;
float f = a;
System.out.println(f);
}
分别看一下这三个结果是多少?
public static void main(String[] args) {
int a = 10/3;
float f = a;
float f1=10/3;
float f2=(float) 10/3;
System.out.println(f);
System.out.println(f1);
System.out.println(f2);
}
f=3.0 :在int a = 10/3,会将结果默认向下取整,所以是3
f1=3.0 :这个是和上面的一样的,先计算10/3,再将10/3的结果转换成int在对f1赋值,所以是3.0
f2=3.3333333 :我们将计算出的结果直接强转为float类型,再将值赋值给f2,所以是3.3333333,这个时候就能看出float精度,是不是误差挺大的,用这个计算载人航天,那就太**!
int、long、float之间的联系:
public static void main(String[] args) {
int a = 11;
long b= 12;
float f1 = a;
float f2 = b;
System.out.println(f1);
System.out.println(f2);
}
上面的对吗?为什么?在之前的章节里面有提到
int和float都是四个字节,为什么long可以放到float中?这个自己看一下前面章节
double p = 12;
float f1 = p;
System.out.println(p);
这样可以吗?
是不是有一种规律
byte<shortI(char)<int<long<float<double,是不是可以向--->这个方向直接强转,反方向得强转
float v = 12f; 这是一般使用float是的样子,不然默认是double
double的精度
double v1 =(double) 10/3;
System.out.println(v1);
结果:3.3333333333333335(16位)
布尔型
public static void main(String[] args) {
boolean b1=true;
boolean b2 = false;
System.out.println(b1);
System.out.println(b2);
}
先记住这些,更细致的内容还有
上面的小列子,感兴趣可以试一下
下一个章节:基本数据类型算运算(算数、逻辑、比较)