您的位置:首页 > 编程语言 > Java开发

第二章 java语法基础

2013-11-14 21:42 239 查看
1、注释(掌握)

(1)单行注释 //:

//后到本行结束的所有字符会被编译器忽略;

(2)多行注释 /* */:

/* */之间的所有字符会被编译器忽略

(3)文档注释 /** */:

在/** */之间的所有字符会被编译器忽略,java特有的(用于生成文档);

注意:多行和文档注释都不能嵌套使用

@author 作者名 @version 版本标识

@parameter 参数及其意义 @return 返回值

javadoc [选项] [软件包名称] [源文件] [@file]

例:javadoc -d . -author -version ArrayTool.java

javadoc工具默认不会提取@author和@version,若需要,则在使用javadoc工具时指定 -author -version两个选项

2、关键字 (了解)



保留字:其实就是还没有赋予特殊含义,但是准备日后要使用过的单词。例:goto和const

3、标示符 (掌握)

标示符:其实就是在程序中自定义的名词。比如类名,变量名,函数名。

命名规则:

(1) 由字母、数字、下划线、$组成,不能以数字开头

注意:此处的字母还可以是中文,日文等;

(2) 大小写敏感

(3) 不得使用java中的关键字和保留字

(4) 别用Java API里面的类名作为自己的类名。

Java中的名称规范:

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

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

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

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

4、常量和变量 (理解)

(1)常量:程序中固定不变化的值

(2)变量:其实就是内存中的一个存储空间,用于存储常量数据。

作用:方便于运算。因为有些数据不确定。所以确定该数据的名词和存储空间。

特点:变量空间可以重复使用。

定义变量的格式:数据类型 变量名 = 初始化值;

作用范围:定义开始到定义它的代码块结束;

同一范围内,不允许多个个局部变量命名冲突

(3)Java成员变量和局部变量

1)局部变量:不是直接声明在类体括号里面的变量;

局部变量使用前必须初始化值;

局部变量没有默认初始化值;

局部变量的作用域是从定义开始到定义它的代码块结束;

2)成员变量:在方法体外,类体内声明的变量,又称字段(Field)或全局变量; 成员变量的作用域是整个类中;

5、数据类型:



(1):基本数据类型:byte、short、int、long、float、double、char、boolean

(2):引用数据类型: 数组、类、接口。

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

自动类型转换:从低级别到高级别,系统自动转的;

强制类型转换:什么情况下使用?把一个高级别的数赋给一个别该数的级别低的变量;

【注】:(1)整型默认:int 浮点型默认:double

(2)声明long型要加l/L,声明float型要加上f/F

(3)boolean不可以转换成其他类型;byte,char,short三者之间不会相互转换,它们在计算时首先转成int类型。

【思考题】

已知byte b1=3,b2=4,b;则b=b1+b2;和b=3+4;哪里话会编译失败?为什么?

b=b1+b2;不可以是因为b1和b2是变量,变量的值是可变的,不确定具体的值,所以默认使用int类型进行存储;b=3+4;3和4都是常量,所以编译时会检查该变量的和是否超出byte类型的范围,如果没有则可赋值(虚拟机规定,int short boolean byte char在运算时都会转为int,32bit整型所以这里要写成b1=(byte)(b1+b2);或者b1+=b2;)

6、运算符号:(掌握)

(1)、算术运算符

1)C/C++只允许 % 两边的操作数是整型的,而Java既支持整型也支持浮点型.

double ret = 3.14 % 1.1;// 结果是 0.94

2)比较下列结果,想想原因:

System.out.println(1.0 / 0);

System.out.println(1 / 0);

因为double的精度比int的精度高,表达式自动转换为double数据类型,除数的值为0.0,1.0/0.0 等效应于1除以一个无限接近0的double类型的数据,结果就是无限大;

3)“+” 除用于算数加法运算外,还可以对字符串进行连接操作。“+”运算符两侧的操作数中只要有一个String类型,一个是基本数据类型时,编译成class文件后,两个操作数就被连接成了一个新的String值:

System.out.println(8+7+"hello"); //结果是:15hello

System.out.println(8+"hello"+7); //结果是:8hello7

System.out.println("hello"+8+7); //结果是:hello87

(2)、赋值运算符。

= += -= *= /= %=

【思考】:

short s = 3; s = s + 2;与s += 2;有什么不同?

s = s + 2;//编译失败 原因:s会被提升为int,运算后的结果是int,无法赋值给short类型。s += 2;//编译通过,因为+=在给s赋值时,自动完成强制转换操作。

(3)、比较运算符。

特点:该运算符的特点是:运算完的结果,要么是true,要么是false。

(4)、逻辑运算符。

& | ^ ! && || 逻辑运算符除了! 外都是用于连接两个boolean类型表达式。

&: 只有两边都为true结果是true。否则就是false。

|:只要两边都为false结果是false,否则就是true

“ ^ ”与“|”不同之处是:当左右都为true时,"^"结果为false。

& 和 &&区别: & :无论左边结果是什么,右边都参与运算。&&:短路与,如果左边为false,那么右边不参数与运算。| 和|| 区别:|:两边都运算。||:短路或,如果左边为true,那么右边不参与运算。

(5)、位运算符:用于操作二进制位的运算符。



左移操作“<<”:将运算数的二进制码整体左移指定位数,左移之后的空使用“0”来补充。

右移操作“>>”:将运算数的二进制码整体右移指定位数,右移之后的空使用“符号位”来补充。若是正数使用“0”补充;若是负数使用“1”补充;

无符号右移">>>":将运算数的二进制码整体右移指定位数,右移之后的空使用“0”来补充。

【注】:<<:相当于乘与2的倍数,>>:相当于除以2的倍数,移n位,就是对乘以或者除以2的n次幂

(6)三目运算符

语法格式:x ? y : z;

其中x为boolean类型表达式,先计算x的值,若为true,则整个三目运算符的结果是表达式y的值,否则就是z的值。

7、程序流程控制 (理解)

(1)判断结构

if语句三种格式:

A. if(条件表达式)

{

执行语句;

}

B. if(条件表达式)

{

执行语句;

}

else

{

执行语句;

}

C. if(条件表达式)

{

执行语句;

}

else if (条件表达式)

{

执行语句;

}

……

else

{

执行语句;

}

if语句特点:a,每一种格式都是单条语句。b,第二种格式与三元运算符的区别:三元运算符运算完要有值出现。好处是:可以写在其他表达式中。c,条件表达式无论写成什么样子,只看最终的结构是否是true 或者false;

(2)选择结构

switch语句

格式:

switch(表达式)

{

case 取值1:

执行语句;

break;

case 取值2:

执行语句;

break;

…...

default:

执行语句;

break;

}

A. switch语句特点:

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

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

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

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

(3)循环结构

A. while语句格式:

while(条件表达式)

{

执行语句;

}

B. do while语句格式:

do

{

执行语句;

}while(条件表达式);

do while特点:是条件无论是否满足,循环体至少执行一次。

C. for语句格式:

for(初始化表达式;循环条件表达式;循环后的操作表达式)

{

执行语句;(循环体)

}

【注】:

A、for里面的连个表达式运行的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,重复找个过程,直到条件不满足为止。

B、while与for可以互换,区别在于for为了循环而定义的变量在for循环结束就是在内存中释放。而while循环使用的变量在循环结束后还可以继续使用

C、最简单无限循环格式:while(true) , for(;;),无限循环存在的原因是并不知道循环多少次,而是根据某些条件,来控制循环。

(4)其他流程控制语句

break(跳出), continue(继续)

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

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

【注】:

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

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

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

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

7、函数(方法) (掌握)

(1)定义:函数就是定义在类中的具有特定功能的一段独立小程序,也称为方法。

(2)函数的格式:

修饰符 返回值类型 函数名(参数列表)

{

执行语句;

return 返回值;

}

返回值类型:函数运行后的结果的数据类型。

参数类型:是形式参数的数据类型。

形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数。

实际参数:传递给形式参数的具体数值。

return:用于结束函数。

返回值:该值会返回给调用者。

(3)调用方法:[类/对象.]方法名(实参);

【注】:函数中只能调用函数,不可以在函数内部定义函数。

(4)重载(overload)

定义:在一个类中,如果出现了两个或者两个以上的同名函数,只要它们的参数的个数,或者参数的类型不同,即可称之为该函数重载了。

如何区分重载:两同一不同(两同:在同一个类中,方法名相同;一不同:参数列表不同(包括/类型、个数、顺序的不同))。【注】:与返回值类型,修饰符都无关。

8、数组 (掌握)

(1)定义:同一种数据类型的集合。数组一旦初始化后,长度就不可改变。

(2)声明:数组类型[] 数组名;

(3)初始化:Java中的数组必先初始化才可以使用,所谓初始化就是为数组的数组元素分配内存,并为每个数组元素赋值;

数组初始化的两种方式:

A、静态初始化初始化时由我们自己指定每个数组元素的初始值,由系统决定需要的数组长度;

格式:数组名 = new 数组类型[]{元素1,元素2,元素3...元素n};

简化语法:数组名 = {元素1,元素2,元素3...元素n};(建议使用这个)

B、动态初始化初始化时由我们指定数组的长度,由系统为数组元素分配初始值;

格式:数组名 = new 数组类型[数组长度];

动态初始化时,系统将负责为这些元素分配初始值。指定初始值原则:

整型:0 浮点:0.0 布尔: false

字符:‘\u0000’(其实就是空) 引用类型:null

【注】:不能静态和动态初始化同时使用:也就是说不能同时指定数组的长度和元素;数组的长度一旦确定,就不能改变,也就数组是定长的;

(4)得到数组长度:数组名.length;(length是数组的属性)

9、java内存。(理解)

(1)寄存器。(2)本地方法区 (3)方法区(4)栈。(5)堆。

开辟不同内存空间是为了对每一片内存中的数据都有不同的处理方式,提高效率。

栈:存储的都是局部变量 ( 函数中定义的变量,函数上的参数,语句中的变量 );

只要数据运算完成所在的区域结束,该数据就会被释放。

堆:用于存储数组对象,也就是实体(啥是实体呢?就是用于封装多个数据的),通过new关键字建立的实体都存放在堆内存当中。

(1)每一个实体都有内存首地址值

(2)堆内存中的变量都有默认初始化值。因为数据类型不同,值也不一样。

(3)垃圾回收机制,Java特有的内存管理机制,在不定时的时间内将垃圾清除释放空间。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: