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

黑马程序员————JAVA语言基础

2015-09-23 22:35 399 查看
------- http://www.itheima.com" target="blank">android培训、http://www.itheima.com" target="blank">java培训、期待与您交流! ----------


前奏:

1:关键字

(1)被Java语言赋予特定含义的单词

(2)特点:

全部小写。

(3)注意事项:

A:goto和const作为保留字存在。

B:类似于Notepad++这样的高级记事本会对关键字有特殊颜色标记

 

2:标识符

(1)就是给类,接口,方法,变量等起名字的字符序列

(2)组成规则:

A:英文大小写字母

B:数字

C:$和_

(3)注意事项:

A:不能以数字开头

B:不能是java中的关键字

C:区分大小写

(4)常见的命名规则(见名知意)

A:包全部小写

单级包:小写

举例:liuyi,com

多级包:小写,并用.隔开

举例:cn.itcast,com.baidu

B:类或者接口

一个单词:首字母大写

举例:Student,Demo

多个单词:每个单词首字母大写

举例:HelloWorld,StudentName

C:方法或者变量

一个单词:首字母小写

举例:name,main

多个单词:从第二个单词开始,每个单词首字母大写

举例:studentAge,showAllNames()

D:常量

全部大写

一个单词:大写

举例:PI

多个单词:大写,并用_隔开

举例:STUDENT_MAX_AGE

 

3:注释

(1)就是对程序进行解释说明的文字

(2)分类:

A:单行注释//

B:多行注释/**/

C:文档注释(后面讲) /** */

(3)注释的作用

A:解释说明程序,提高了代码的阅读性。

B:可以帮助我们调试程序。

后面我们会讲解一个更高端的一个调试工具

 

4:常量

(1)在程序执行的过程中,其值不发生改变的量

(2)分类:

A:字面值常量

B:自定义常量(后面讲)

(3)字面值常量

A:字符串常量 "hello"

B:整数常量12,23

C:小数常量12.345

D:字符常量'a','A','0'

E:布尔常量true,false

F:空常量null(后面讲)

(4)在Java中针对整数常量提供了四种表现形式

A:二进制由0,1组成。以0b开头。

B:八进制由0,1,...7组成。以0开头。

C:十进制由0,1,...9组成。整数默认是十进制。

D:十六进制由0,1,...9,a,b,c,d,e,f(大小写均可)组成。以0x开头。

 

5:进制转换

(1)其他进制到十进制

系数:就是每一个位上的数值

基数:x进制的基数就是x

权:对每一个位上的数据,从右,并且从0开始编号,对应的编号就是该数据的权。


结果:系数*基数^权次幂之和。

(2)十进制到其他进制

除基取余,直到商为0,余数反转。

(3)进制转换的快速转换法

A:十进制和二进制间的转换

8421码。

B:二进制到八进制,十六进制的转换

 

6:变量

(1)在程序的执行过程中,其值在某个范围内可以发生改变的量

(2)变量的定义格式:

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

B:数据类型 变量名;

  变量名 = 初始化值;

 

7:数据类型

(1)Java是一种强类型语言,针对每种数据都提供了对应的数据类型。

(2)分类:

A:基本数据类型:4类8种

B:引用数据类型:类,接口,数组。

(3)基本数据类型

A:整数占用字节数

byte1

short2

int 4

long8

B:浮点数

float4

double8

C:字符

char2

D:布尔

boolean1


注意:

整数默认是int类型,浮点数默认是double。


长整数要加L或者l。

单精度的浮点数要加F或者f。

 

8:数据类型转换

(1)boolean类型不参与转换

(2)默认转换

A:从小到大

B:byte,short,char -- int -- long -- float -- double

C:byte,short,char之间不相互转换,直接转成int类型参与运算。

(3)强制转换

A:从大到小

B:可能会有精度的损失,一般不建议这样使用。

C:格式:

目标数据类型 变量名 = (目标数据类型) (被转换的数据);


 

 

 

 

 

一、算数运算符:+(加)、-(减)、*(乘)/(除)%(取余) ++(自增1) --(自减1)

10 / 3 == 3、10 % 3 ==1

10 / 0 : 运行时异常;

10.0 / 0 :Infinity(无穷)不是异常

10 % 0 : 运行时异常

10.0 % 0 : NaN(Not A Number)不是异常

-10 % -3 ==-1 、10 % 3 ==1

-10 % 3==-1、10 % -3==1

如果表达式中,只做++或--一件事情,那么前++/--和后++/--效果一样的;但如果表达式中做多件事情:前++/--:先自增/自减,然后再参与表达式的其它运算;后++/--:先参与表达式的运算,然后在自增/自减;

二、赋值运算符

=:执行顺序,从右至左,并且最后返回变量;

+= 、  -= 、  *= 、 /=、 %=

特点:带隐式强制转换;

byte b1 = 10;

b1 = b1 + 20;//编译错误

b1 += 20;//OK的-->b1 = (byte)(b1 + 20);

三、关系运算符:==:判断是否相等;!=:判断是否不等;<:左操作数是否小于右操作数;

>:左操作数是否大于右操作数;<=:左操作数是否小于或者等于右操作数;

>=:左操作数是否大于或者等于右操作数;

四、逻辑运算符:

1.&&(语意:并且):两边都为true,结果为:true;

2.||(语意:或者):有一边为true,结果为true;

3.!(语意:不是):!true:false;!false:true

 

五、运算符:

1.位运算符:<<(左移);>>(有符号右移);>>>(无符号右移);&(按位与):两位都是1,结果为1;| 按位或):有1位为1,结果为1;^(按位异或):两位相同结果为0,否则为1;

~(取反):1变0,0变1

2.位运算符的考点:

1).高效的计算某数 * 2 : <<

2).高效的计算某数 / 2 : >>

3).&、|同&&、||的区别:

逻辑与&&、||:具有短路行为;

4).将两个变量的值交换:三次异或;

3.三目运算符:

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

六、键盘录入:

步骤:

1.import java.util.Scanner;

2.Scanner sc = new Scanner(System.in);

3.int : int num = sc.nextInt();

  double : double d = sc.nextDouble();

  String : String s = sc.next();

七、选择结构:

1.if语句:

1)格式1:

if(条件表达式){

}

 注意:如果if体内只有一条语句,可以省略大括号,但不建议;

2)格式2:

if(条件表达式){

//为true,执行这里

}else{

4000
//为false,执行这里

}

3)格式3:

if(条件表达式){

}else if(条件表达式2){

}else if(条件表达式3){

}else{

}

2.switch语句:

1).格式:

switch(表达式){

case 值1:

//代码

break;

case 值2:

//代码

break;

default:

//代码

break;

}

2).注意事项:

1."表达式"可以产生的值:byte,short,int,char,枚举(JDK5以后),String(JDK7以后)

2.case语句后跟"常量表达式",不能是"变量";而且不能出现相同的常量值;

3.break;语句"不是必须的"。如果不写,如果一旦case相应的值成功,但内部没有break语句,那么将会无条件(不再进行case匹配)的继续向下执行其它case中的语句,直到遇到break;语句或者到达switch语句结束。

4.多个case之间,没有顺序关系;

5.default语句"不是必须的"。可以不写,它就相当于多重if语句中最后的else。

6.default语句和case语句"没有顺序关系"。

 

八、循环结构

1.while循环:

while(条件表达式){


}

2.do_while循环:

do{


}while(条件表达式);

3.for循环:

for(定义循环变量表达式  ;   条件表达式    ;  增量表达式){


}

4.说明:

1)三个表达式都不是必须的;但分号必须要写;

2)执行顺序:

a.定义循环变量表达式;b.条件表达式;c.进入循环;

d.增量表达式;e.条件表达式;f.进入循环;j增量表达式

    5.三种循环的区别:

1)只有do_while循环是先无条件的进入循环体执行一次,然后再判断;

  while和for循环都先判断,后进入循环体;

2)一般对于有明显的遍历范围的,建议首选for循环。

          对于没有明显遍历范围的,一般使用while。

    对于循环体中的内容,如果需要先执行一次,再判断,那么可以使用do_while

 

九、方法:

1.方法的作用:代码复用;

2.方法定义的格式:

修饰符返回值类型方法名([形参列表]){

}

修饰符:目前只需要写:public static

返回值类型:可以是任何的Java类型(基本数据类型、引用数据类型)。

                           如果没有返回值,这里要写void

方法名:自定义标识符;

形参列表:可以没有,但是一定写一对小括号。

  如果有,每个形参是由:数据类型 形参名

  多个形参,中间用逗号隔开;

    3.方法内,可以写什么?

1).定义变量; 2).if语句,switch语句;3).各种循环语句;

    总之:除了不能定义方法,其它都可以;

4.方法的注意事项:

1).方法不调用不执行;

2).方法与方法是平级关系,不能嵌套定义;

3).方法定义的时候参数之间用逗号隔开;

4).方法调用的时候不用再传递数据类型;

5).如果方法有明确的返回值,一定要有return带回一个值;

5.方法的重载:

1).在一个类中,可以定义多个同名的方法,但形参列表不能完全相同;

2).方法重载,跟返回值类型无关;跟形参名无关;

 

6.方法的值传递和引用传递:

a.当一个方法接收的是一个"基本数据类型"时,调用方法传递实参时,是将"值"复制到方法内;在方法内,如修改其值,修改的只是"副本",原值不会被改变;

b.当一个方法接收的是一个"引用数据类型"是,调用方法传递实参时,是将"引用"复制到方法内;在方法内,是可以通过这个引用修改"堆"空间的内容,即使方法结束,修改会影响到原堆中的值;

 

 

十、数组:

1.一维数组:

1).定义的格式:

a.动态初始化:数据类型[] 数组名 = new 数据类型[数组长度];

b.静态初始化:

    数据类型[] 数组名 = new 数据类型[]{值1,值2,值3,.....,值n};

数据类型[] 数组名 = {值1,值2,值3.....值n};

2).数组是"引用数据类型",变量存储的是"引用(地址)";

3).当new(实例化)一个数组对象时,其"值"的空间是在堆中分配的,对于各种数据类型,都会分配一个默认值:

整数:0

小数:0.0

字符:'\u0000'

布尔:false

String:null

其它引用类型:null

4).数组的访问方式:使用:数组名[索引]

 

 

2.二维数组:

1).定义的格式:

数据类型[][] 数组名 = new 数据类型[第一维的长度][第二维的长度];

左边也可以写成:

数据类型 数组名[][]

数据类型[] 数组名[]

数据类型[][] 数组名 = new 数据类型[][]{{值1,值2},{值3,值4},{值5,值6,值7}};

数据类型[][] 数组名 = {{值1,值2},{值3,值4},{值5,值6,值7}};

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: