java入门基础知识总结(java学习系列三Java基本语法01)

1.1. 关键字

什么是关键字

定义:被Java语言赋予了特殊含义的单词。

特点:关键字中所有字母都为小写。

小实验:

使用EditPlus编辑器写一个Hello World输出程序。

java入门基础知识总结(java学习系列三Java基本语法01)(1)

编辑器中蓝色字体就是关键字,红色字体就是JDK自己为我们所提供的类。

注意:

1、所有的关键字都不需要记忆,在后期的学习中慢慢就掌握了。

2、EditPlus默认会创建一个bak备份文件,如果不想创建备份文件,只需要通过如下操作:

点击Tools-->Preferences-->File-->勾掉Create backup file when saving。

1.2. 标识符

定义:在程序中自定义的一些名称。 自己的名字

特点:由26个英文字母大小写,数字:0-9,符号:_ $ 组成。

定义合法标识符规则:

1、数字不可以开头。

2、不可以使用关键字。

注意:

1、java中严格区分大小写。

2、在起名字的时,为了提高阅读性,要尽量有意义。

3、公司中经常会通过“_”代表某一类名称,例如:_temp。

通过“$”代表外部类与内部类的关系(后面会讲到),例如:TrafficLamp$Red。

Java中的名称规范:

包名:多单词组成时所有字母都小写。

例如:xxxyyyzzz com.doitedu.hangge

类名接口名:多单词组成时,所有单词的首字母大写。

例如:XxxYyyZzz class XuRuiHang {}

变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。

例如:xxxYyyZzz xuRuiHang()

常量名:所有字母都大写。多单词时每个单词用下划线连接。

例如:XXX_YYY_ZZZ XU_RUI_HANG = 3;

1.3. 注释

定义:用于注解说明解释程序的文字就是注释。

特点:提高了代码的阅读性。

Java中的注释格式:

单行注释

格式: //注释文字

多行注释

格式: /* 注释文字 */

文档注释

格式:/** 注释文字 */

例如:

/*** 这是我的Hello World程序。** @author 多易教育*/class Demo {/** 这是主函数,是程序的入口 它的出现可以保证程序的独立运行,*/public static void main(String[] args) {// 这是输出语句用于将括号内的数据打印到控制台。System.out.println("Hello World");}}

注意:

1、对于单行和多行注释,被注释的文字,不会被JVM(java虚拟机)解释执行。

2、对于文档注释,是java特有的注释,其中注释内容可以被JDK提供的工具 javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档。

3、注释是一个程序员必须要具有的良好编程习惯。初学者编写程序可以养成习惯:先写注释再写代码。

4、将自己的思想通过注释先整理出来,在用代码去体现。因为代码仅仅是思想的一种体现形式而已。

5、单行注释可以嵌套单行注释,单行注释可以嵌套多行注释,多行注释可以嵌套单行注释。

但是,多行注释不能嵌套多行注释,因为多行注释的开头会和被嵌套的多行注释的结尾配对,导致后面的注释失效。

6、可以使用注释对代码中的错误进行定位。

1.4. 常量

定义:常量表示不能改变的数值。

Java中常量的分类:

1、整数常量,所有整数。

2、小数常量,所有小数。

3、布尔(boolean)型常量,只有两个数值。true、false。

4、字符常量,将一个数字字母或者符号用单引号( ' ' )标识。

5、字符串常量,将一个或者多个字符用双引号("")标识。

6、null常量,只有一个数值就是:null。

对于整数,有三种表现形式:

八进制:0-7,满8进1,用0开头表示。

十进制:0-9,满10进1。

十六进制:0-9,A-F,满16进1,用0x开头表示。

进制的由来:

任何数据在计算机中都是以二进制的形式存在的。二进制早期由电信号开关演变而来。

一个整数在内存中一样也是二进制的,但是使用一大串的1或者0组成的数值进行使用很麻烦。

所以就想把一大串缩短点,将二进制中的三位用一位表示。这三位可以取到的最大值就是7,超过7就进位了,这就是八进制。

但是对于过长的二进制变成八进制还是较长,所以出现的用4个二进制位表示一位的情况,四个二进制位最大是15,这就是十六进制。

规律:进制越大,表现形式越短。

小实验:

使用计算器进行进制转换。

打开计算机,点击“查看”-->“程序员”。

java入门基础知识总结(java学习系列三Java基本语法01)(2)

在十进制下,输入1000。

java入门基础知识总结(java学习系列三Java基本语法01)(3)

然后点击二进制,结果如下:

java入门基础知识总结(java学习系列三Java基本语法01)(4)

注意:

1byte = 8bit 字节

1k = 1024byte

附:进制的基本转换

①十进制 二进制 互转

例如:

1011 = 1*2(0) 1*2(1) 0*(2) 1*2(3)= 1 2 0 8 = 11

附:括号中的数值代表次方。

②十进制 八进制 互转

例如:

十进制 43

二进制 0101011

三位分割 010-101-110

八进制 2 5 6

因此,0101011 = 0256

结论:

八进制,其实就是二进制位,3个二进制位,1个八进制位。

③十进制 十六进制 互转

十进制 43

二进制 0101011

四位分割 1010-1110

十六进制 10(A) 14(E)

因此,0101011 = 0AE

结论:

十六进制,其实就是二进制位,4个二进制位,1个十六进制位。

负数的二进制表现形式:

对应的正数二进制取反加1。

求-6的二进制表现形式:对应的正数6二进制取反加1。

0000-0110

取反 1111-1001

加1 0000-0001

-----------------

1111-1010

注意:

负数的二进制最高位永远是1。

1.5. 变量

定义:内存中的一个存储区域,该区域有自己的名称(变量名)和类型(数据类型),该区域的数据可以在同一类型范围内不断变化。

用来不断的存放同一类型的常量,并可以重复使用。

特点:变量其实就是将不确定的数据进行存储。也就是需要在内存中开辟一个空间。

定义变量的格式:

数据类型 变量名 = 初始化值;

例如:byte b = 3;

注意:

1、格式是固定的,记住格式,以不变应万变。

2、变量的作用范围(一对{}之间有效)。

理解:

变量就如同数学中的未知数X。

Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同大小的内存空间。

数据类型包括8种基本类型,3种引用类型。

java入门基础知识总结(java学习系列三Java基本语法01)(5)

注意:

整数默认类型:int类型,小数默认类型:double类型。

常见问题:

问题一:

java入门基础知识总结(java学习系列三Java基本语法01)(6)

错误原因:

由于整数默认类型是int类型,如果数值超过了int类型的范围,那么就会报出如上错误。

即使是赋值给long类型的变量,但是后面的常量已经超过了int类型的范围,同样会报错。

解决方法:

在数值后面加上一个“l”,就可以让编译器知道后面的常量是long类型的。

java入门基础知识总结(java学习系列三Java基本语法01)(7)

问题二:

java入门基础知识总结(java学习系列三Java基本语法01)(8)

错误原因:

由于小数默认是double(8byte)类型,赋值给float(4byte)类型的变量,当然可能会损失精度。

解决方法:

在数值后面加上一个“f”,就可以让编译器知道后面的常量是float类型的。

java入门基础知识总结(java学习系列三Java基本语法01)(9)

问题三:

java入门基础知识总结(java学习系列三Java基本语法01)(10)

错误原因:

由于变量y是未初始化的,所以不能直接操作。

解决方法:

一定要为变量y先赋值,再打印输出。

问题四:

java入门基础知识总结(java学习系列三Java基本语法01)(11)

错误原因:

由于变量z的作用范围是在一对{}之间有效,超出这个范围就失效了。所以,找不到z这个符号。

解决方法:

将大括号去掉,或者在大括号里面打印变量z。

1.6. 类型转换

类型转换在开发中也很常用,简单来说就是类型之间相互的转化,类型转换共分两种,自动类型转换和强制类型转换。

1.6.1. 自动类型转换(隐式类型转换)

定义:自动类型转换就是不需要我们手动对类型来进行强制转换。

例如:

java入门基础知识总结(java学习系列三Java基本语法01)(12)

int类型的变量占4个字节,当byte类型的变量与其相加的时候,首先会将byte类型的变量自动转化为4个字节的int类型,然后再进行加法操作。

1.6.2. 强制类型转换(显式类型转换)

定义:强制类型转换需要把类型进行手动转换,否则无法正常使用

例如:

java入门基础知识总结(java学习系列三Java基本语法01)(13)

错误原因:

当byte类型的变量提升为int类型与int类型的常量200相加后,结果依然是int类型。再赋值给byte类型,当然会出现损失精度的错误。

解决方法:

进行强制类型转换,也就是将占4个字节的int类型值,再强硬存储到占1个字节的byte变量中。

java入门基础知识总结(java学习系列三Java基本语法01)(14)

结果为-53的原因是,200 3结果是203,换算成占1个字节空间的二进制也就是11001011。

由于首位为1,所以是负数,除符号位外,其余部分取反加1,得1,0110101,即-53。

注意:

1、只有数值类型才能进行加法操作,非数值类型不行!

例如:

java入门基础知识总结(java学习系列三Java基本语法01)(15)

2、char类型数据也可以和int类型相加,但是首先char类型数据会被自动提升为int类型。

例如:

java入门基础知识总结(java学习系列三Java基本语法01)(16)

字符类型数据之所以能够自动提升为int类型是因为字符类型数据在计算机中也是用0、1表示的,int类型数据在计算机中也用0、1表示,当然可以转换为int类型数据。

但是,字符类型数据在计算机中使用0、1是按照何种顺序组合排列的则需要依据某个码表而定。

Java中的内置码表是Unicode,既包含中文,也包含英文。

注意:

通过强转也可以把数字强转成字符。

例如:

java入门基础知识总结(java学习系列三Java基本语法01)(17)

表达式的数据类型自动提升

所有的byte型、short型和char的值将被提升到int型。

如果一个操作数是long型,计算结果就是long型;

如果一个操作数是float型,计算结果就是float型;

如果一个操作数是double型,计算结果就是double型。

面试难题:

说出报出如下错误的原因:

java入门基础知识总结(java学习系列三Java基本语法01)(18)

错误原因涉及到编译器编译程序时候的细节:

之所以byte b = 3 7;没有报错,是因为3和7都是常量,编译器知道结果是10,并且在byte范围之内,因此就自动进行了强转,所以不会报错。

而b = b1 b2;中b1和b2都是变量,编译器编译程序是一行一行编译的,它根本不知道b1和b2到底是多少,两个byte类型的数据相加时,首先都会被提升为int类型,他们的和也是int类型,其值可能会超过byte的范围,因此就会报错。

而如下程序则不会报错:

java入门基础知识总结(java学习系列三Java基本语法01)(19)

原因是因为int类型的两个变量相加,最后还是int类型,虽然结果溢出,但是不会报错。

java入门基础知识总结(java学习系列三Java基本语法01)(20)

例子1:

java入门基础知识总结(java学习系列三Java基本语法01)(21)

注意:

整数与整数相除时,结果永远是整数,小数部分被忽略。

例子2:

java入门基础知识总结(java学习系列三Java基本语法01)(22)

注意:

负数对正数取模结果为负数。

正数对负数取模结果为正数。

例子3:

java入门基础知识总结(java学习系列三Java基本语法01)(23)

注意:

加号也可以作为连接符使用。

例子4:

java入门基础知识总结(java学习系列三Java基本语法01)(24)

注意:

例子4在计算机中的实际操作为:当执行b = a ;语句时,先把a放在一个临时内存空间中,然后将a自加1,再将临时内存空间中的a赋值给b,因为b还是原来的a的值,也就是3。

java入门基础知识总结(java学习系列三Java基本语法01)(25)

注意:

当执行b = a;语句时,先将a自加1,再将a赋值给b,因此b的值是4。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页