黑马程序员-----------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];
相关文章推荐
- 黑马程序员学习log第一篇基础知识:java概述及基础语法总结
- 黑马程序员ava学习笔记——java语法基础知识
- 黑马程序员-----java基础语法知识总结*
- 黑马程序员-------- java语法基础知识
- 黑马程序员--java基础日记--基础语法知识
- 黑马程序员——java语言基础知识回顾(四)
- 黑马程序员——java语言基础——静态static知识小结
- 黑马程序员---总结的java基础知识
- 黑马程序员——第二天(Java基础语法1)
- 黑马程序员0826_java基础知识
- 黑马程序员_java基础知识学习总结三
- 黑马程序员——java语言基础知识回顾(三)
- 黑马程序员0822_java基础知识
- 黑马程序员:java中集合的一些小知识
- 黑马程序员--java基础知识注意点收录
- 黑马程序员_java基础知识学习总结一
- 黑马程序员_java基础知识
- 黑马程序员_java基础知识补充
- 黑马程序员Java培训、Android培训_网络编程的基础知识
- 黑马程序员 java学习笔记-基础知识盘点