今天主要学习的java语言的基础组成,一般有,关键字、标识符、注释、常量和变量、运算符、语句、函数、数组等方面组成,任何的高级语言都基本上包括上述的几个部分。学习语言主要是掌握语言内部的一些精髓,其实也就是算法之类的,剩下的语言只是运用的工具,只要内在掌握了,换语言,也能学的会。
1. 关键字
【概念】:被附于特殊含义的单词,就称为关键字
关键字就是一些java规定的,代表特殊意义,有特殊用途的词语。比如:public、static、void之类的
【注意】
① 关键字都是小写的
② 类名的首字母一定要大写,多个单词组成,每个单词的首字母大写
2. 标识符
【概念】标识符实际上就是标记某个数组、变量或者类的一个标志
【规则】由26个字母和0-9数字以及$和_组成
【注意】
① 有两个不能把数字放在最前面
② 不能用关键字。
【问】_和$标识符什么时候用?
【答】各个公司有一些不同的规则用法,比如你要写一个Demo1中负责测试的类名,怎么写呢?Demo_1$Test。
3. 注释
一般的注释有三种,// 、/*….*/、/**….*/第三种是java独有的,可以用javadoc提取生成,产品说明书。
【注意】
在生成.class文件的时候,实际上注释是不参加编译的。
【面试】
如果在面试的时候,遇到了上机题,写程序的时候,必须带着注释!
写程序的时候,最重要的是把内在的步骤思想弄清楚,那程序就一定能写出来!
【另】
注释还能对程序进行调试,缩小出错的范围,从而判断出出错的到底是哪个部分。
4. 常量
【概念】不能改变的数值
【分类】
① 整数常量
② 小数常量
③ 布尔常量
④ 字符常量,用单引号标识
⑤ 字符串常量,用双引号标识
⑥ null常量,null和字符串中的””空字符串是不相同的,注意
4.1整数的进制
①十进制
②二进制
【bit位和byte的区别】
bit,一个二进制的位,byte,8个二进制的位
③八进制
④十六进制
4.2 进制的转换
①10-->2
10一直除2余2,这样一直做
②2-->10
每位乘2的n次方,乘开就行了
其他的以此类推
5. 变量
可以用一张图来描述,在内存中,开辟一个空间,确定变量类型,名字和数据,一旦开辟,里面的类型和名称,一般是不变的,但是里面的数据一般是会变化的,因此称变量。
变量的定义基本格式:
#变量类型名称=初始化值#
【例如】
int a=4
【注意】
①变量里面会有很多注意事项,实际上基本都是与变量的取值范围有关,比如整型的变量,其重点就在于,有四种数据类型,byte short int long,这四种数据类型,分别对应着,一个八位,两个八位,四个八位和八个八位,他们的取值范围不同,有导致,大范围的转化为小范围的会精度缺失,有时候会发生错误。小范围的转大范围的为自动升级替换。
②有默认的两点很重要,如果是出现在java程序中的数字,一般整数都是int型,小数都是double型。
在java中,如果原来是一两碗中的饭(一个byte)要放到二两碗中,那直接就放了,只是把一两饭前面的数据,全部加成零而已。
但是!如果是二两碗中的饭,要放到一两碗里去,java默认是放不了的。如果,编程者认为,自己的那个二两碗里的饭其实并没有那么多,是可以放进一两碗里的,那可以利用强制转换,把饭放进去。
5.1字符的精度转换应用
字符的精度转换很有意思
【实例】
Class CharTrans{
public static voidmain(String [] args){
System.out.println(‘a’+1);
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>//得到的结果一定是数字98,为什么呢?因为a的ASCALL码数字是97。
}
【问】但是为什么会打印出数字呢?
【答】首先要弄清楚,char类型是用;2个字节表示的,int是4个字节,所以syso中的那个1是int型的,int+char,最后肯定是自动升格为了int型,所以最后出来的,一定是一个数字。
5.2面试中的常见问题
【实例】
class Demo{
public static voidmain(String [] args){
byte b=4;
byte b1=3;
byte b2=7;
b=b1+b2;
}
}
【结果】
Demo.java:6: 错误: 不兼容的类型: 从int转换到byte可能会有损失
b=b1+b2;
^
1 个错误
【问】请解释一下原因
【答】首先,先解释一下,为什么byte b=4;没有报错,4是int类型,b是byte类型。所以,实际上这里是一个大数据类型转小数据类型,本来需要强型转换的,不过这里为什么没有转换,但是也不报错呢?因为,java编译的时候,它在看,b右边的那个4,有没有超过byte -128~127的取值范围,如果有就报错,这里没有,当然不报错。
那为什么,下面b=b1+b2报错?因为b1、b2是变量,编译器没有办法判断,到底b1+b2的结果是不是在取值范围之内,所以报错。
如果是一个intx=b1+b2就可以,为什么,因为int完全可以装下两个byte,完全没有问题。
6. 运算符
6.1算术运算符
基本的符号:+ - * /特殊一些的运算符:% +(连接符,连接两个字符串)
【注意】以下实例中的结果,会和我们生活有所不同
【实例】
class Demo{
public static voidmain(String [] args){
int a=3775;
a=a/1000*1000;
System.out.println(a);
}
}
【结果】
3000 //在做除法的时候,把小数点后面的东西去掉了
【特殊情况】
①运算符一般都比较清楚了,最需要注意的是%的运算中有正负之分,只有被模数是负数,结果才会是负数,被模数不是负数,结果一定不是负数。
②a++和++a的问题,实际上是不一样的,如图
【b=a++】
【b=++a】
6.2赋值运算符
基本的几种:= += -= *= /= %=
【表现等价形式】:
a+=4; --> a=a+4;
b*=3; --> b=b*3;
c-=2; --> c=c-2;
d/=4; --> d=d/4;
e%=5; --> e=e%5;
6.2.1面试题型
【实例1】
class Demo{
public static void main(String []args){
short b=1;
b=b+4;
System.out.println(b);
}
}
<pre name="code" class="java">【结果1】
Demo.java:4: 错误: 不兼容的类型: 从int转换到short可能会有损失
b=b+4;
^
1 个错误
【实例2】
class Demo{
public static voidmain(String [] args){
short b=1;
b+=4;
System.out.println(b);
}
}
【结果2】
5
【问】为什么会发生这种情况
【答】因为+=和a=a+x;并不是一回事,+=是赋值运算符,进行1次操作。上例中来说,就是右边已经运算好b=5;+=符号就判断一下5是不是在short的取值范围之后,是!然后就赋值过去了。而实例1,则是需要两步运算,等号右边数的取值范围并不确定,因此会报错,具体原因,见前面的类型转换部分。
================================================================================补充部分
===============================================================================
① long number=1515154l;注意的是,long型的数据后面,一定要跟上l,才能体现出是long型的数据。
② 同样的float f=3.4f; 最后的这个f也是不可缺少的,因为,要体现出,把默认的double型数据转换成了float型数据。