关于第一天学习的一些补充:
环境变量的设置:(为什么要设置?因为在dos命令行上运行javac时,如果不在jdk/bin的目录里运行,就会报错。为了方便,所以设置path路径,因为如果不在jdk/bin目录下运行javac时,系统会自动到path路径去寻找javac.ese)
Java_home=D:\jdk
Path=%Java_home%\bin
顺带一句就是,类是java里面的最基本单位
好了,接下来的是第二天学习的一些心得:
1.关键字:
特点:全由小写字母组成;在高级编辑器中字体会有颜色标记;
goto、const作为保留关键字,一般不用
2.自定义标识符:
命名规则:
一.标识符只能由数字、字母、美元符号、人民币符号、下横线组成,采用驼峰命名法(字下美人数骆驼);
二.标识符不能以数字开头;
三.要见名知意;
四.名字区分大小写,一般不限制长度;
五.标识符名字不可以是关键字。
命名规则:
1.类或接口:
单个单词:首字母大写,其余字母小写;
多个单词:每个单词首字母大写,其余字母小写。
2.方法或变量:
单个单词:字母全小写;
多个单词:第一个单词全小写,剩下的单词首字母大写,其余字母小写。
3.常量:
单个单词:字母全大写;
多个单词:字母全大写,每个单词之间用下横线连接。
3.注释:
类型:
单行注释:// 单行注释可以嵌套;
多行注释:/*
//
*/ 多行注释可以嵌套单行注释,但不能嵌套多行注释。
文档注释:/**
*/
4.常量:
字面值常量:
类型:
字符串常量 用“ ”;
数值型常量:整数型、小数型;
布尔型常量 只有true和false两个值;
字符型常量 用' '。
注意:由于java用的是unicode的编码制,所以1个字符=2个字节,而1个中文=2个字节,所以1个中文=1个字符
自定义常量?
5.变量
基本数据类型分为四类八种:
整型数据:
byte 1字节=8bit 取值范围:-128~127
short 2字节=16bit
int 4字节=32bit
long 8字节=64bit
注意:默认状态下,数字都是按照int类型,除非自己特别声明
浮点型:
float 32bit=4字节
double 64bit=8字节
注意:默认状态下,都是按照double型定义,除非特别声明
字符型:
char 2字节
布尔型:
boolean 1或4个字节
当定义一个变量时,占用4个字节
当定义一个数组变量时,每个元素占用1个字节
需要特别注意的是,字符串类型String是引用数据类型,并不是基本数据类型里面的。切记!切记!!
类型转换:
默认类型转换:取值范围从小到大自动转型
byte,short,char--》int--》long--》float--》double
byte、short、char参与运算时自动转化为int
注意:当输出的第一个类型是String时,那么后面跟着输出的都是String类型
例:
System.out.println('a'+1);//98
System.out.println("hello"+'a'+1);//helloa1
System.out.println('a'+1+"hello");//98hello
System.out.println("5+5="+5+5);//5+5=55
System.out.println(5+5+"=5+5");//10=5+5
强制类型转换:目标数据类型变量名=(目标数据类型)被转换的数据
例: byte b1,b2,b;
b=b1+b2;//这句将会编译出错,因为b1,b2都是byte类型,他们参与“+”运算时自动转化为int,所以会出错
---------------------------------------------------------------------------------------------------------------------------------------------------------
float f1 = (float)12.345;
float f2 = 12.345f;
两句代码的区别是:f1其实是通过一个double强制转换过来的,
而f2在定义的时候就已经声明为float类型
-------------------------------------------------------------------------------------------------------------------------------------------------------------
byte b=150;//会出现编译错误,因为150超出了byte的取值范围
改正:byte b=(byte) 150//强制类型转换,输出为-106=-128+(150-128) ;
byte b1=(byte)128 输出为-128
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
笔者之前一直有个疑惑:关于byte b=1+3;与int a=1; int b=3;byte=a+b; 的区别
笔者认为:前者1和3虽然默认为是int类型,但是由于这是常量,赋值运算从右往左,所以先运算1+3=4,再看4有没有超出byte的范围,若超出,则需要强制转换,没有则直接赋值;所以前者并没有错误;
后者因为a和b是变量,赋值运算同样是从右到左运行,所以(a+b)整体为int类型,需要强制转换才能使得程序不会报错
所以笔者认为关键点就是:如果是赋值一个常量,那么就只需要看看该常量有没有超出目标类型的取值范围;
若是赋值一个变量,那么需要对比目标变量与赋值变量类型是否满足默认类型转换。