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

黑马程序员-----------java语法知识

2015-04-02 16:49 169 查看
                  

                            -----------android培训java培训、java学习型技术博客、期待与您交流!------------

1.基础语法知识:

三元运算符:

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

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

如果条件为false,运算获得结果是表达式2.

式列:获取两个数中的最大数。

三元运算符必须有结果。

 int x=3,z;

 z=(x>2)?100:200;

  System.out.println("z="+z);//z=100

1)判断结构

if:语句用于做判断使用的。常见与对于某一范围进行判断,或者几个变量进行判断,用boolean表达式的判断。

判断语句三种格式:

1.if(条件表达式)

{

执行语句;

}

执行流程:如果如果条件表达式为true,就执行语句,否则什么都不会执行。2. if(条件表达式)

{

      执行语句体;

}

else

{

执行语句体;

}

执行流程:如果if条件表达式为true,就if的语句执行体,否则,就执行else语句执行体;

3. if(条件表达式)

{

      执行语句体;

}

else if(条件表达式)

{

 执行语句体;

}

   else

{

执行语句体;

}

 

执行流程:

如果if(条件表达式):为true,就执行if的执行语句体。

如果else if(条件表达式):为true,就执行else if执行语句体。

否则,就执行else执行语句体。

 

注意事项:

什么时候用if语句?

第一种格式在判断条件为一种情况下使用。

第二种格式在判断条件为两种情况下使用。

第三种格式在判断条件多的情况下使用。

作用域:

所有变量的定义只在它所属的大括号内有效。如果if或者else里面控制语句体只有一条,可以省略大括号。

但是控制语句多时,就必须写大括号。

选择结构:

switch 语句

  用于做选择使用的,一般用于几个常量的判断。

switch 语句会把几个常量值直接加载到内存中,在判断效率要比if语句高。所以就几个常量的判断,一般选择switch语句。

Switch(变量)   

{

Case取值1:

  执行语句;

Case取值 2:

  执行语句;

   Break;

.......

default:

  执行的语句;

  Break;

 }

格式的解释:

Switch:表示这里是的是switch语句,后面的是选项。

Switch语句一般和byte,short,int,char在一起使用。

Case:表示这里就是选项的值,后面的值将和表达式的值进行匹配。

Case后面的值不能够重复。

Break是switch语句执行结束的标记。

default:当所有的case和表达式都不匹配是,就走default的内容。

它相当于if....else语句,一般建议不要使用省略号。

执行流程:

进入switch语句后,就会根据表达式的值去找对应的case值。

如果没有找到,那么就会执行default的内容。

 

 

注意事项:

default可以放到执行语句的前面吗?

可以,但是不建议这样做。

Switch语句遇到break或者执行到程序的大括号就结束。

 

If和switch的特点:

If语句的特点:

1.对具体的值进行判断。

2.对区间判断。

3.运算结果是boolean类型的表达式进行判断。

Switch语句的特点:

1.对机体的值进行判断,

2.值的个数通常是固定的。

对几个固定的值判断,建议使用switch语句,因为switch语句会将具体的答案都加载进内存中。效率相对较高。

3.switch只能对基本数据类型进行操作,byte,short,int,char.

3)循环结构:

循环语句:while,do while ,for

如果我们发现有很多重复的内容的时候,就该使用循环改进代码。让代码看起来更简洁。

While循环语句的格式:

While(条件表达式)

{

循环执行体;

}

 

do  while循环语句格式:

do

{

循环执行体;

}

While(条件表达式)

 

While特点:条件如果不满足,不会走循环体。

注意事项:while是先判断在循环。

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

注意事项:do while 先执行一次在回来判断。

for循环语句格式:

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

{

执行语句;(循环体)

}

无限循环的最简单的表现形式:

for (; ; )

{

}

while (true)

{

}

循环注意:一定要注意哪些语句需要参与循环,哪些不需要参与。

变量有自己的作用域,对于for来讲:如果用于控制循环体的增量定义在for语句中,那么该变量只在for语句内有效。

总结:什么时候用循环语句?

当要对某些语句执行很多次时,就使用循环结构。。

什么情况用for,什么情况用while呢?

for和while可以互换,如果用于定义循环增量,用for更合适,因为节省内存。

建议使用for循环,节约内存。

循环嵌套:

简单的说就是循环体里面还有循环体。

就是大圈套小圈原理。

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

{

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

{

循环执行语句体。

}

}

总结:嵌套循环是外循环条件执行一次,内循环必须执行到条不满足才结束。

(1)累加思想:

原理:

 

通过变量的记录住每一次变化的结构,通过循环的形式,进行累加的动作。

(2)计数器思想:

原理:通过一个变量记录住数据的状态变化,也通过循环完成。

(3)大圈套小圈:

原理:尖朝上改变条件,尖朝下改变初始化值。

While 和for的区别:for是为循环而定义变量在循环结束就在内存中释放。

而while循环使用的变量在循环结束后还可以使用。比较浪费内存资源。

break和continue

break(跳出),continue(继续)

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

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

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

2. 函数:

1.函数的概念:函数就是定义在类中具有特定功能的一段小程序。函数也称为方法。

2.函数的格式:

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

{

执行语句;

return返回值;

}

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

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

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

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

return:用于结束函数。

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

如何定义一个函数呢?

1.既然函数是一个独立的功能,那么该功能的运算结果是先明确的。

2.在明确在定义该功能的过程中是否需要未知内容参与运算。

 

 

函数的特点:

1.定义函数可以将功能代码进行封装,便于对该功能进行调用。

2.函数只用被调用才会被执行。

3.函数的出现提供了代码的复用性。

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

5.函数中只用调用函数,不可以在函数内部定义函数。

6.定义函数时,函数的结果谁调用返给谁。交由调用者处理。

7.可以自定义访问权限。

定义函数时需要注意:

1.功能只定义所需内容,不是该功能所需的内容不要定义。

2.如果非要定义,也是单独的定义一个功能来体现,以后开发时,尽量把函数定义成功能来体现。

3.不要将代码都定义在主函数中。

4.主函数的作用:对已有的功能进行调用。

5.函数名就是一个自己定义的标识符。函数名的定义,要尽量体现这个函数的功能。是为了增强该函数的阅读性。方便调用者使用,所以函数名一定要起得有意义。

6.静态方法只能调用静态方法。主函数是静态的。

7.返回类型和参数类型没有关系。

定义函数需要两个明确:  -

1.这个函数的结果是什么,也就是返回值类型就是什么。

2.有没有未知数据参与运算。

2.函数的重载:

1.重载的概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数和参数类型不同即可。

2.重载的特点:与返回值类型无关,只看参数列表。

3.重载的好处:方便阅读,优化了程序的设计。

函数重载什么时候使用?

重载:当定义的功能相同,但参与运算的未知内容不同,那么,这时就定义一个函数名称以表示其功能,方便阅读。而通过参数列表的不同来区分多个同名函数。

3.数组:

1.数组的概述:

(1).概念:同一种类型数据的集合.其实就是一个容器。

(2)好处:可以自动给数组中的元素从0开始编号 ,方便操作这些元素。

(3)对数组的基本操作就是存和取。就是对角标的操作。

(4)既可以存储基础数据类型又可存储引用类型,基础数据类型的长度是固定的。数组的长度是固定的。集合是可变长度的,用于存储引用数据类型。

 

 

 

数组的定义:

1.元素类型[]数组名=new 元素类型[元素个数或者数组长度];

2.元素类型[]数组名={1,2,3,5,8}可以给数组一起赋值,也可以分别赋值。

3.元素类型[]数组名;

数组名=new 元素类型[元素个数或者数组长度];

数组的特点:

1.数组定义时:必须明确数组的长度(就是数组中可以存储的元素个数)因为数组的长度是固定的。

2.必须明确数组元素的类型。

4.数组的内存结构:

Java内存区域的划分:寄存器,本地方法区,方法区,栈内存,堆内存。

因为每一个内存区域对数据的处理方式不同。

栈内存的特点:存储的都是局部变量,一旦使用完就在栈内存中自动释放。节省内存。

堆内存的特点:存储的是实体。

1.堆内存中的实体都有内存地址值。

2.堆内存中的变量都有默认的初始化值。

3.对于没有任何的指向的数组实体,会视为垃圾,会在不定时的垃圾回收机制所收回。

(数组和对象,只要是new的 都会在堆内存中新建一个数组实体。)

5.操作数组常见的问题:

1.数组角标越界异常(ArraylndexoutofboundsExceoption):操作数组时,访问当了数组中不存在的角标。

2.空指针异常(NullPointerException):当引用没有任何指向值为null的情况,该引用还在操作数组实体。

6.对数组的常见操作:1.获取数组中的元素2.获取最值3.排序(冒泡排序)4.查找(折半查找)5.插入。

数组中的数组

二维数组[][]

格式1:int[][]arr=new int[3][2];

定义了名称为arr的二维数组。

二维数组中有3个一维数组。

每一个一维数组中有2个元素;

一维数组的名称分别为arr[0],arr[1],arr[2]

给第一个一维数组1角标位赋值为78写法是:arr[0][1]=78;

格式2:int[][] arr=new int[3][];

二维数组中有三个一维数组

每一个一维数组都是初始值为null.

可以对这个三个一维数组分别进行初始化

Arr[0]=new int [3];

Arr[1]=new int [1];

Arr[2]=new int [2];

1.基础语法知识:

三元运算符:

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

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

如果条件为false,运算获得结果是表达式2.

式列:获取两个数中的最大数。

三元运算符必须有结果。

 int x=3,z;

 z=(x>2)?100:200;

  System.out.println("z="+z);//z=100

1)判断结构

if:语句用于做判断使用的。常见与对于某一范围进行判断,或者几个变量进行判断,用boolean表达式的判断。

判断语句三种格式:

1.if(条件表达式)

{

执行语句;

}

执行流程:如果如果条件表达式为true,就执行语句,否则什么都不会执行。2. if(条件表达式)

{

      执行语句体;

}

else

{

执行语句体;

}

执行流程:如果if条件表达式为true,就if的语句执行体,否则,就执行else语句执行体;

3. if(条件表达式)

{

      执行语句体;

}

else if(条件表达式)

{

 执行语句体;

}

   else

{

执行语句体;

}

 

执行流程:

如果if(条件表达式):为true,就执行if的执行语句体。

如果else if(条件表达式):为true,就执行else if执行语句体。

否则,就执行else执行语句体。

 

注意事项:

什么时候用if语句?

第一种格式在判断条件为一种情况下使用。

第二种格式在判断条件为两种情况下使用。

第三种格式在判断条件多的情况下使用。

作用域:

所有变量的定义只在它所属的大括号内有效。如果if或者else里面控制语句体只有一条,可以省略大括号。

但是控制语句多时,就必须写大括号。

选择结构:

switch 语句

  用于做选择使用的,一般用于几个常量的判断。

switch 语句会把几个常量值直接加载到内存中,在判断效率要比if语句高。所以就几个常量的判断,一般选择switch语句。

Switch(变量)   

{

Case取值1:

  执行语句;

Case取值 2:

  执行语句;

   Break;

.......

default:

  执行的语句;

  Break;

 }

格式的解释:

Switch:表示这里是的是switch语句,后面的是选项。

Switch语句一般和byte,short,int,char在一起使用。

Case:表示这里就是选项的值,后面的值将和表达式的值进行匹配。

Case后面的值不能够重复。

Break是switch语句执行结束的标记。

default:当所有的case和表达式都不匹配是,就走default的内容。

它相当于if....else语句,一般建议不要使用省略号。

执行流程:

进入switch语句后,就会根据表达式的值去找对应的case值。

如果没有找到,那么就会执行default的内容。

 

 

注意事项:

default可以放到执行语句的前面吗?

可以,但是不建议这样做。

Switch语句遇到break或者执行到程序的大括号就结束。

 

If和switch的特点:

If语句的特点:

1.对具体的值进行判断。

2.对区间判断。

3.运算结果是boolean类型的表达式进行判断。

Switch语句的特点:

1.对机体的值进行判断,

2.值的个数通常是固定的。

对几个固定的值判断,建议使用switch语句,因为switch语句会将具体的答案都加载进内存中。效率相对较高。

3.switch只能对基本数据类型进行操作,byte,short,int,char.

3)循环结构:

循环语句:while,do while ,for

如果我们发现有很多重复的内容的时候,就该使用循环改进代码。让代码看起来更简洁。

While循环语句的格式:

While(条件表达式)

{

循环执行体;

}

 

do  while循环语句格式:

do

{

循环执行体;

}

While(条件表达式)

 

While特点:条件如果不满足,不会走循环体。

注意事项:while是先判断在循环。

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

注意事项:do while 先执行一次在回来判断。

for循环语句格式:

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

{

执行语句;(循环体)

}

无限循环的最简单的表现形式:

for (; ; )

{

}

while (true)

{

}

循环注意:一定要注意哪些语句需要参与循环,哪些不需要参与。

变量有自己的作用域,对于for来讲:如果用于控制循环体的增量定义在for语句中,那么该变量只在for语句内有效。

总结:什么时候用循环语句?

当要对某些语句执行很多次时,就使用循环结构。。

什么情况用for,什么情况用while呢?

for和while可以互换,如果用于定义循环增量,用for更合适,因为节省内存。

建议使用for循环,节约内存。

循环嵌套:

简单的说就是循环体里面还有循环体。

就是大圈套小圈原理。

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

{

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

{

循环执行语句体。

}

}

总结:嵌套循环是外循环条件执行一次,内循环必须执行到条不满足才结束。

(1)累加思想:

原理:

 

通过变量的记录住每一次变化的结构,通过循环的形式,进行累加的动作。

(2)计数器思想:

原理:通过一个变量记录住数据的状态变化,也通过循环完成。

(3)大圈套小圈:

原理:尖朝上改变条件,尖朝下改变初始化值。

While 和for的区别:for是为循环而定义变量在循环结束就在内存中释放。

而while循环使用的变量在循环结束后还可以使用。比较浪费内存资源。

break和continue

break(跳出),continue(继续)

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

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

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

2. 函数:

1.函数的概念:函数就是定义在类中具有特定功能的一段小程序。函数也称为方法。

2.函数的格式:

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

{

执行语句;

return返回值;

}

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

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

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

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

return:用于结束函数。

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

如何定义一个函数呢?

1.既然函数是一个独立的功能,那么该功能的运算结果是先明确的。

2.在明确在定义该功能的过程中是否需要未知内容参与运算。

 

 

函数的特点:

1.定义函数可以将功能代码进行封装,便于对该功能进行调用。

2.函数只用被调用才会被执行。

3.函数的出现提供了代码的复用性。

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

5.函数中只用调用函数,不可以在函数内部定义函数。

6.定义函数时,函数的结果谁调用返给谁。交由调用者处理。

7.可以自定义访问权限。

定义函数时需要注意:

1.功能只定义所需内容,不是该功能所需的内容不要定义。

2.如果非要定义,也是单独的定义一个功能来体现,以后开发时,尽量把函数定义成功能来体现。

3.不要将代码都定义在主函数中。

4.主函数的作用:对已有的功能进行调用。

5.函数名就是一个自己定义的标识符。函数名的定义,要尽量体现这个函数的功能。是为了增强该函数的阅读性。方便调用者使用,所以函数名一定要起得有意义。

6.静态方法只能调用静态方法。主函数是静态的。

7.返回类型和参数类型没有关系。

定义函数需要两个明确:  -

1.这个函数的结果是什么,也就是返回值类型就是什么。

2.有没有未知数据参与运算。

2.函数的重载:

1.重载的概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数和参数类型不同即可。

2.重载的特点:与返回值类型无关,只看参数列表。

3.重载的好处:方便阅读,优化了程序的设计。

函数重载什么时候使用?

重载:当定义的功能相同,但参与运算的未知内容不同,那么,这时就定义一个函数名称以表示其功能,方便阅读。而通过参数列表的不同来区分多个同名函数。

3.数组:

1.数组的概述:

(1).概念:同一种类型数据的集合.其实就是一个容器。

(2)好处:可以自动给数组中的元素从0开始编号 ,方便操作这些元素。

(3)对数组的基本操作就是存和取。就是对角标的操作。

(4)既可以存储基础数据类型又可存储引用类型,基础数据类型的长度是固定的。数组的长度是固定的。集合是可变长度的,用于存储引用数据类型。

 

 

 

数组的定义:

1.元素类型[]数组名=new 元素类型[元素个数或者数组长度];

2.元素类型[]数组名={1,2,3,5,8}可以给数组一起赋值,也可以分别赋值。

3.元素类型[]数组名;

数组名=new 元素类型[元素个数或者数组长度];

数组的特点:

1.数组定义时:必须明确数组的长度(就是数组中可以存储的元素个数)因为数组的长度是固定的。

2.必须明确数组元素的类型。

4.数组的内存结构:

Java内存区域的划分:寄存器,本地方法区,方法区,栈内存,堆内存。

因为每一个内存区域对数据的处理方式不同。

栈内存的特点:存储的都是局部变量,一旦使用完就在栈内存中自动释放。节省内存。

堆内存的特点:存储的是实体。

1.堆内存中的实体都有内存地址值。

2.堆内存中的变量都有默认的初始化值。

3.对于没有任何的指向的数组实体,会视为垃圾,会在不定时的垃圾回收机制所收回。

(数组和对象,只要是new的 都会在堆内存中新建一个数组实体。)

5.操作数组常见的问题:

1.数组角标越界异常(ArraylndexoutofboundsExceoption):操作数组时,访问当了数组中不存在的角标。

2.空指针异常(NullPointerException):当引用没有任何指向值为null的情况,该引用还在操作数组实体。

6.对数组的常见操作:1.获取数组中的元素2.获取最值3.排序(冒泡排序)4.查找(折半查找)5.插入。

数组中的数组

二维数组[][]

格式1:int[][]arr=new int[3][2];

定义了名称为arr的二维数组。

二维数组中有3个一维数组。

每一个一维数组中有2个元素;

一维数组的名称分别为arr[0],arr[1],arr[2]

给第一个一维数组1角标位赋值为78写法是:arr[0][1]=78;

格式2:int[][] arr=new int[3][];

二维数组中有三个一维数组

每一个一维数组都是初始值为null.

可以对这个三个一维数组分别进行初始化

Arr[0]=new int [3];

Arr[1]=new int [1];

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