黑马程序员——二、java基础之语言基础组成.part1(2)

来源:互联网 发布:淘宝怎么举报售假 编辑:程序博客网 时间:2024/05/20 19:45
---------------------- android培训、.java培训、期待与您交流! ----------------------
        有了黑马程序员——一、java基础之java初体验(1)之中的初步认识java后,需要进一步了解java的语言基础。接下来,看一下java的语言基础有哪些呢?


        接下来,是详细的学习2.1--2.6部分,因为2.7--2.8的内容比较重要,所以单独另一篇来介绍,参见黑马程序员——二、java基础之语言基础组成.part2(3)

2.1 关键字


 2.2标识符

2.2.1在程序中自定义的一些名称,用作给变量、类、方法命名,具体的命名方式参见命名规范

(a)  包名:多单词组成时所有字母都小写.例如:xxyyzz

(b)  类名接口名:多单词组成时,所有单词的首字母大写。例如:XxxYyyZzz

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

(d)  常量名:所有字母都大写,多单词时每个单词用下划线连接例如:XX_YY_ZZ

规范:是约定俗成的方式,命名时不参照命名规范也可以正常编译运行,但是阅读性差。

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

2.2.3定义合法标识符规则

(a) 数字不可以开头。

(b) 不可以使用关键字。

规则:必须遵守的行为,否则JVM编译失败。

2.2.4 Java中严格区分大小写敏感

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

2.2.6Java 不采用通常语言使用的 ASCII 字符集,而是采用 unicode 这样的标准的国际字符集,所以这里的字母的含义:英文、汉字等等,但尽量不要用汉字来定义标识符

2.3注释

        注释的作用是为了方便代码的传播和日后维护。养成良好的代码习惯是非常有必要的。

        而在编程过程中,注释的作用有点像作文的提纲。将思想先整理成注释,然后转化成代码。当然,实际操作中,也可以酌情考虑部分代码先写出来后加注释。

        java中注释有三种:单行注释,多行注释,文档注释。格式如下:

       • 单行注释
              • 格式://注释文字
       • 多行注释
              • 格式:/* 注释文字*/
       • 文档注释
              • 格式:/** 注释文字*/

        对于单行和多行注释,被注释的文字,不会被JVM(java虚拟机)解释执行。
       对于文档注释,是java特有的注释,其中注释内容可以被JDK提供的工具javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档。

2.4 常量和变量

        2.4.1常量

       2.4.1.1首先,常量有哪些分类呢?

        (a)整数常量:所有整数,而在java中,整数又有十进制、二进制、八进制、十六进制等表现形式。接下来会详细解释。
         (b)小数常量:所有小数。

        (c)布尔型常量:较为特有,只有两个数值。true false。
        (d)字符常量:将一个数字字母或者符号用单引号( ' ' )标识。
        (e)字符串常量:将一个或者多个字符用双引号标识。
        (f)null常量:只有一个数值就是:null。

     2.4.1.2整数常量的不同表现形式

       首先,任何数据在计算机中最终形式是二进制,而我们接触最多的是十进制。

       进制:一天24小时,可以称为24进制;一周7天,可以称为7进制。这就是我对进制的理解。

       对于八进制、十进制、十六进制间的相互转换及与二进制之间的转换不赘述。只记录几个需要注意的点:

       (a)进制越大,表现形式越短;

       (b)负数的二进制表现形式:正数的二进制取反再加一;

        (c)二进制中最高位表示符号,最高位为1,是负数;最高位为0,是正数。这一点,在位运算符运算时有具体体现,>>和>>>是不同的,具体的会在下面具体解释。

2.4.2变量

2.4.2.1变量的概念

首先,对变量的理解。从字面意思看,就是一个变化的量。可以理解为数学中的未知数。

而java中对变量的概念是这么定义的:

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

        变量的定义需要做什么呢?要告诉JVM这个变量的类型,变量的名字,和变量的值(成员变量可以不赋值,系统默认赋初值)。

变量的生命周期在一对“{}”之间。

2.4.2.2变量的生命周期

局部变量:即定义在方法或语句块内部的变量,生命周期是从声明位置到“}”为止,并且局部变量在使用前必须声明期类型和初始化赋值;

成员变量:及定义在方法外部,类的内部的变量,从属于对象,生命周期伴随对象始终,如果不自动初始化,它会自动初始化为该类型的默认初始值(数值型变量初始化为0或0.0,字符型变量初始化是16位的0,boolean型默认是false等);

静态变量,又称类变量。用static修饰,从属于类,生命周期伴随类始终,从类加载到卸载,如果不自动初始化,它会自动初始化为该类型的默认初始值。

2.4.2.3变量的数据类型

java作为强类型语言,对每种数据都明确了具体数据类型,在内存中分配不同的内存空间。

Java 的数据类型分为两大类,即基本数据类型和引用数据类型。

在基本数据类型中有 3 类 8 种基本数据类型(逻辑型-boolean;文本型-char;数值型-byte、 short、 int、 long、 float、 double),

引用数据类型有类(class)、接口(interface)、数组(array),注意,引用数据类型的大小统一为 4 个字节,记录的是其引用对象的地址!


整数默认:int;小数默认:double。

Byte 类型(1 字节)、 short (2 字节)、 int (4 字节)、 long (8 字节)、 float (4 字节)、 double(8 字节)。

2.4.2.4数值型变量的类型转换

类型转换有两种:自动类型转换(也叫隐式类型转换)和强制性类型转换(也叫显式类型转换);

(a)表达式的数据类型自动提升
• 所有的byte型、short型和char的值将被提升到int型。

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

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

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

(b)强制性类型转换

把一个高级别的数赋给一个别该数的级别低的变量时需要进行强制类型转换。如byte b=3;b=(byte)b+4;

级别从低到高为:byte,char,short(这三个平级)-->int-->float-->long-->double

经典题目:

(a)System.out.println('a')与System.out.println('a'+1)的区别。

(b)byte b1=3,b2=4,b; b= b1+b2;b=3+4;哪句是编译失败的呢?为什么呢?

2.5运算符

因为运算符这一部分是需要在编程过程中逐步掌握的,没有太大难度,所以只记录不同运算符的应用需注意的状况。

2.5.1算术运算符注意的问题

%:取模,即取余数,如5%2=1。如果对负数取模,忽略负号,如5%-2=1;模数为负数时,正常运算,如-5%2=-1。

/:除号。整数间做除法运算时,只保留整数部分而舍弃小数。实际上存在隐式的类型转换。

+:除去加法运算,还可以做字符串的相加动作,并且能把非字符串转换成字符串。如5+“”,输出的是一个为5的字符串。这是最简单最常用的将非字符串转换成字符串的形式。

2.5.2转义运算符

这个应用主要出现在正则表达式和IO流中表示路径时,在以后的课程中应用学习。记住的就是在用到“\”字符时,考虑一下是否出现转义情况。

2.5.3赋值和比较运算符

赋值运算符中需要注意的就是“+=”表示的是进行了一个运算,在不同数值型计算时包含了隐式类型转换。

比较运算符需要注意的是不要把“==”写成“=”,后者是赋值运算符,这是一个容易出错的细节。

2.5.4逻辑运算符

用来连接boolean型表达式,需要注意的是

“&&”和“&”的区别,“&&”是如果左边为false,右边不再运算;“&”不管左边是否为false,右边都参与运算。

“||”和“|"的区别,”||“是如果左边为true,右边不运算;”|“不管左边是否为true,右边都运算。

2.5.5位运算符

是用来对二进制进行运算的,需要注意的是:

(a)>>和>>>的区别,如果计算的是负数,”>>"右移后,左边的空位补1,结果还是一个负数;“>>>”右移后,左边出现的空位补0。

主要应用在取一个二进制数后面固定位数的值时。

(b)计算x变量与2的整数次幂相乘或除以的结果时,用"<<"和">>"符号,如,3*8,用3<<3最快,因为是直接对二进制运算。

(c)^运算符在不引入第三方变量对两个变量换值时作为一种技巧性方法应用,并且还可以应用于加密算法。

2.5.6三元运算符

与if语句不同的是:

三元运算符操作的是表达式而不是语句,if/else中可以有语句;

因为三元运算符有一个赋值动作,所以操作数类型有限定,而if/else中不存在此限制;

2.6程序流程控制(语句)

有三种结构:判断结构,选择结构,循环结构。

2.6.1判断结构 if/else

if语句特点:

(a)每一种格式都是单条语句。

(b)第二种格式与三元运算符的区别:三元运算符运算完要有值出现。好处是:可以写在其他表达式中。

(c)条件表达式无论写成什么样子,只看最终的结构是否是true 或者false。

2.6.2选择结构 switch

switch语句特点

(a)switch语句选择的类型只有四种:byte,short,int ,char

(b)case之间与default没有顺序。先执行第一个case,没有匹配的case执行default

(c)结束switch语句的两种情况:遇到break,执行到switch语句结束

(d)如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束

注意:对比与if/else语句,运行速度稍快,是因为switch加载时,会将所有选项加载进内存,是索引结构,数据不多时可选用switch,高效。

2.6.3循环结构

(a) do{}while();和while(){}区别在于前者循环体至少执行一次,而后者如果条件不满足,则不执行。

(b) for(初始化表达式;循环条件表达式;循环后的操作表达式){执行语句;}初始化表达式只执行一次,且在for中定义的变量随for循环结束而消失,节省内存空间。

for循环的嵌套使用,作为大圈套小圈思想的应用,使用率很高。

(c) 最简单的无限循环形式 while(true){}和for(;;){},因为没有结束条件,所以始终循环。

2.6.4其他控制语句

break(跳出),continue(继续)

break语句:应用范围:选择结构和循环结构。

continue语句:应用于循环结构。

注:
(a)这两个语句离开应用范围,存在是没有意义的。

(b)这个两个语句单独存在下面都不可以有语句,因为执行不到。

(c)continue语句是结束本次循环继续下次循环。

(d)标号的出现,可以让这两个语句作用于指定的范围。



      黑马能给我我需要的,所以,黑马,我来了!

                                                                                              ——爱编程,爱黑马,我是快乐的小32

 

---------------------- android培训、.java培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net


原创粉丝点击