您的位置:首页 > 职场人生

黑马程序员---Java基本语法(二)

2015-07-08 10:15 507 查看
-----------android培训java培训、java学习型技术博客、期待与您交流!------------

一:java注释

注释格式

1、文档注释:“/**……*/”

2、单行(single-line)注释:“//……”

3、块(block)注释(有的叫多行注释):“/*……*/”

————————————————————————————————————————————————————

Java代码基本格式:

Java中所有程序代码都必须存在于一个类中,用class关键字定义类,在class之前可以有一些修饰符。格式如下:

修饰符 class 类名

{

程序代码

}

注:

1、Java是严格区分大小写的。

2、Java程序中一句连续的字符串不能分开在两行中写。

————————————————————————————————————————————————————



注意 一:多行注释中不要嵌套多行注释!

二:写程序时养成写注释的习惯,开头不用急着写代码,可以先写需求,思路和步骤!

/*

需求 .....

思路 .....

步骤 .....

*/

————————————————————————————————————————————————————

2 java语言基础组成






2.1、关键字

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

特点:体现上都是英文小写。

1、用于类和接口的声明:class, extends, implements, interface

2、包引入和包声明:import, package

3、数据类型:byte, boolean, char, double, int, long, float, short

4、某些数据类型的可选值:flase, ture, null

5、流程控制:break, case, continue, default, do, else, for, if, return, switch, while

6、异常处理:catch, finally, throw, throws, try

7、修饰符:abstract, final, native, private, protected, public, static

8、操作符:instanceof

9、创建对象: new

10、引用:this, supper

11、方法返回类型:void

三、标识符

Java中的包、类、方法、参数、变量的名字,可以由任意顺序的大小写字母、数字、下划线(_)、美元符号($)组成,但不能以数字开头,不能是Java中的保留关键字。

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

aabbcc

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

AaBb

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

aaBb

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

AA_BB

三、常量

1、整形常量

十进制

十六进制——以0x或0X开头

八进制——以0开头

长整形——以L(l)结尾

Binary是二进制的意思,

Octal是八进制的意思,

Hex是十六进制的意思。

int a = 10;

// 以二进制结果打印

System.out.println(Integer.toBinaryString(a));

————————————————————————

(1): 十进制 6 转换成二进制: 十进制转二进,除2取余数;



方式: 结果为110

——————————————————————————

(2): 二进制转化为十进制:二进制转换为十进制,乘以2的幂数。

如1110的十进制等于:

23*1+22*1+21*1+20*0=14。

——————————————————————————

(3): 十进制与八进制和十六进制的互转
如下图:

100011 转换成八进制:43 ,转换成十六进制:23



——————————————————————————

(4):如果一个数是负数,它的二进制怎么算呢?

如图:-6的二进制表达形式为 6的二进制取反加1



2、浮点数常量

单精度浮点数——后面加f(F)

双精度浮点数——后面加d(D)

注:

a.小数常量的默认类型是double型,所以float类型常量后一定要加f(F)。

b.浮点数常量可以用指数形式表示,如5.022e+23f

3、布尔常量

true或false

4、字符常量

由英文字母、数字、转义序列、特殊字符等的字符所表示,如'a'、'\t'等。

Java中的字符占两个字节,是用Unicode码表示的,也可以使用'\u'加Unicode码值来表示对应字符,如'\u0027'。

常用的转义字符有:

\t——表示接受键盘输入,相当于按了一下回车键

\n——表示换行

\t——表示制表符,相当于Tab键

\b——表示退格键,相当于Back Space键

\'——表示单引号

\”——表示双引号

\\——表示反斜杠“\”

5、字符串常量

字符串常量用双引号括起来。

6、null常量

null常量表示对象的引用为空。

——————————————————————————

——————————————————————————

四、变量

概念:内存中的一个存储空间。有自己的名称(变量名)和类型(数据类型)。

作用:用来不断的存放同一类型的数据,并可以重复使用。

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

数据类型:

Java中有两种数据类型:1、基本数据类型;2、引用数据类型。这里主要讲解基本数据类型。



说明:Java程序中,整数默认:int 小数默认:double

类型的自动提升:

在运算中,当低类型数据与高类型数据进行计算时,系统会自动将表达式中的低类型数据提升到高类型。如:

byte b = 3 ; int c;

c= b + 2; //b会自动提升为int类型进行运算。

强制类型转换:

当程序中,数据类型需要变换时,可以进行强制转换。如:

byte b = 3;

b = b + 4;//报错

b = (byte)b+4;//强制类型转换,强制将b+4的结果转换为byte类型,再赋值给b。

五、运算符

1、算术运算符



如果a<b;

%代表取模运算 任何数%1=0; a%a=0; a%b=a;

a.b中有一个负数,则取 左边被模数!

注:进行取模运算时,如果有负数,运算结果取决于运算左边有没有负数。

字符串数据和任何数据使用 +都是相连接,最终都会变成字符串。

2、赋值运算符

符号:= += -= *= /= %=

例: int a,b,c; a=b=c =3;

int a = 3; a+=5;//等同运算a=a+5;

——————————————————————————

注意点: short s=2;

s=s+2; //编译报错,因为s会被提升为int类型,运算后的结果还是int类型,无法赋值给short类型

s+=2; //编译通过,因为+=运算符在给s赋值时,自动完成了强制转换操作

——————————————————————————

3、比较运算符

逻辑运算符用于连接boolean类型的表达式。

"&" 与符号特点:只要两边的boolean表达式结果,有一个为false,那么结果就是false。只有两边都为true,结果为true。

"|" 或符号特点:两边只要有一个为true,结果为true;只有两边都为false,结果为false。

"^" 异或符号特点:两边相同结果是false,两边不同结果是true。

&和&&的区别:

单&(单与)时,左边无论真假,右边都进行运算;

双&(双与)时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。(运算效率高)

““||” 双或时,左边为真,右边不参与运算。

5、位运算符



左移:<<;空位补0,被移除的高位丢弃,空缺位补0。

3<<2 运算如图:



注意: a<<b=a*2



右移: >> ;被移位的二进制最高位是0, 右移后,空缺位补0;最高位是1,空缺位补1。

无符号右移: >>> ;被移位二进制最高位无论是0或者是1,空缺位都用0补。

与: & ;二进制位进行&运算,只有1&1时结果是1,否则是0。

或: | ;二进制位进行 |运算,只有0
| 0时结果是0,否则是1。

异或: ^ ;任何相同二进制位进行 ^运算,结果是0;1^1=0
, 0^0=0。 不相同二进制位 ^运算结果是1。1^0=1
, 0^1=1。

注意:一个数异或同一个数两次,结果还是原数(数字不变)【可用于数据加密解密:第一次异或运算相当于加密,第二次异或运算相当于解密】

注意 :( 与 ,或, 异或)在位运算中逻辑和比较运算符中方法相同

练习题

练习题:1)最有效率的算出2乘上8等于几? 答案 2〈〈3

2) 对于两个整数变量的值进行互换(要求不能用第三方变量) ? 答案如下图:

第一种方法:



第二种方法:


两种方法都可以,大家可以慢慢品味~

3) 用比较运算符和位运算符将十进制60转换成十六进制!

参考思路如下图



反码:~;对二进制进行取反。

6、 三元运算符

格式:

(条件表达式)?表达式1:表达式2;

a)如果条件为true,运算后的结果是表达式1;

b)如果条件为false,运算后的结果是表达式2;

示例:

获取两个数中大数。

int x=3,y=4,z;

z = (x>y)?x:y;//z变量存储的就是两个数的大数。

运算符的优先级:

一、程序流程控制

也称语句,主要有:判断结构、选择结构和循环结构。

1、 判断结构——if

if语句的三种格式:

if.....

if....else....

if....elseif.....else.....

if语句特点:

1,每一种格式都是单条语句。

2,if...else 与三元运算的区别:三元运算符运算完要有值出现。好处是:可以简化if else代码。弊端是必须返回一个结果

3,条件表达式无论写成什么样子,最终的结果不是true就是 false。

2、 选择结构——switch

switch语句格式:

switch(表达式)

{

case :.......

break;

case:

........

break;

…...

default:

.......;

break;

}

switch语句特点:

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

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

3)结束switch语句的两种情况:1、遇到break结束;2、执行到switch结尾结束。

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

注:JDK1.5以后可以接收枚举类型,JDK1.7以后可以接收字符串。

注意: if...elseif...else....和switch语句区别。具体什么场景下,应用哪个语句呢?如果判断的具体数值不多,而且符合byte short int char这四种类型。虽然两个语句都可以使用,建议使用switch语句,因为效率稍高。

其他情况如对区间判断,boolean类型判断,使用if,if的使用范围更广。

3、 循环结构——while,do while,for

while语句格式:

while(条件表达式)

{

......;

}

do while语句格式:

do

{

.....;

}while(条件表达式);

while和do while的区别:

while:先判断条件,只有条件满足才执行循环体。do while:先执行循环体,再判断条件,条件满足,再继续执行循环体。

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

注意“;”不要写错地方,如果错写在了上面 y<3 的后面,程序将进入死循环,并不会继续向下读取语句!!



for语句格式:

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

{

.......;

}

说明:

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

b,while与for可以互换,区别在于: for中的变量在for循环结束就是在内存中释放。

而while循环使用的变量在循环结束后还可以继续使用。

c,最简单无限循环格式的两种形式:while(true){}和 for(;;){},对于for来讲,表达式默认就是ture。无限循环存在的原因是并不知道循环多少次,而是根据某些条件,来控制循环。

下面一个图片可以看出,for语句的执行先后顺序: 打印输出结果为:a dc dc...



4、其他流程控制语句——break,continue

break (跳出循环,跳到循环尾)语句:应用范围:选择结构和循环结构。

continue(继续循环,跳到循环头)语句:应用于循环结构。

注:

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

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

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

4,标号的出现,可以让这两个语句作用于指定的范围。只能用于循环结构。

注意:多个for循环嵌套时,break 可以指定跳出哪个循环!!



continue 同理,多个for循环,也可以指定!

二、函数

定义:定义在类中的具有特定功能的一段独立小程序。也称方法。

格式:

修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,…)

{

执行语句;

return返回值;

}

其中:

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

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

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

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

return:用于结束函数。

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

特点:

[align=left]定义函数可以将功能代码进行封装,便于对该功能进行复用。[/align]

[align=left]函数只有被调用才会被执行。[/align]

[align=left]函数的出现提高了代码的复用性。[/align]

[align=left]对于函数没有具体返回值的情况,返回值类型用关键字void表示,那么该函数中的return语句如果在最后一行可以省略不写。[/align]

注意:

a) 函数中只能调用函数,不可以在函数内部定义函数。

b) 定义函数时,函数的结果应该返回给调用者,交由调用者处理。

注意,返回类型为void的方法不可以用printIn()调用,如下图



函数的一个重要特性——重载(override)

概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数列表的个数或者参数类型不同即可。

特点:与返回值类型无关,只看参数列表。

好处:方便于阅读,优化了程序设计。

注意: 重载和返回值类型没有关系,两个方法只有返回类型不同时不能同时存在于一个类中!!

示例:

int add(int x,int y){return x+y;}

int add(int x,int y,int z){returnx+y+z;

double add(double x,double y){return x+y;}

什么时候用到重载?

当定义的功能相同,但参与运算的未知内容不同。那么,这时就定义一个函数名称以表示起功能,方便阅读,而通过参数列表的不同来区分多个同名函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: