黑马程序员——Java基础语法

------- android培训java培训、期待与您交流! ----------


一、程序流程控制  

1、判断结构——if语句

格式1:

if(条件表达式){

执行语句;

}

格式2:

if(条件表达式){

执行语句;

}else{

执行语句;

}

格式3:

if(条件表达式){

执行语句;

}else{

}else if(条件表达式){

执行语句;

}else{

执行语句;

}

if 语句注意事项;
A:比较表达式无论简单还是复杂,结果必须是boolean类型。
B:if语句控制的语句体如果是一条语句,大括号可以省略;
如果是多条语句就不能省略。如果if语句没有写大括号,if就只能控制离它最近的单挑语句。
C:一般来说,有左大括号就没有分号,有分号就没有左大括号。
D:三元运算符都可以用if语句转换,反之不成立。 因为三元运算符是一个运算符,
运算符操作完毕就应该有一个结果,而不是一个输出。
当if语句控制的操作是一个输出语句的时候就不能 转换为三元运算符

2、选择结构——switch语句

switch语句格式:
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2 ;
break;
...
default: //当所有的值都和表达式不匹配的时候,就执行此控制的语句,其实它就相当于if语句的else
语句体n+1;
break;
}

switch语句特点:

A:switch语句选择的类型JDK5以前只有四种:byte,short,int,char。JDK 5.0以后可以是枚举。

JDK 7.0以后可以字符串

B:结束switch语句的两种情况:①遇到break,②执行到switch语句结束。
C:如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,
直到遇到break或者switch结尾结束。
D:进入switch语句后,执行顺序是先执行case,然后从上到下,最后再执行default。
即使default放在case上面,执行顺序也不变。

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

while语句格式:

while( 条件表达式 ) {
         执行语句;
 }

do while语句格式:

do {
执行语句;
}while( 条件表达式 );

for语句格式:

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

          执行语句;(循环体)

    }


4、循环语句的区别:
do...while循环至少执行一次循环体。
而for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句。
那么,我们一般使用哪种循环呢?
优先考虑for,其次while

while and for循环的区别:

使用区别:while与for可以互换,区别在于for为了循环而定义的变量在for循环结束就在内存中释放,
而while循环使用的变量在循环结束后还可以继续使用。
如果你想在循环结束后,继续使用控制条件的那个变量,用while循环,否则用for循环。
不知道用哪个就用for循环。因为变量及早的中内存中消失,可以提高内存的使用效率
其实还有一种场景的理解:
如果一个范围的,用for循环非常明确。
如果是不明确要做多少次,用while循环较为合适

5、其他流程控制语句

break:中断
continue:继续
return:返回

break:中断的意思
使用场景:
A:switch语句中。
B:循环语句中。
(循环语句中加入了if判断的情况)
注意:离开上面的两个场景,无意义
如何使用?
A:跳出单层循环
B:跳出多层循环
要想实现这个效果,就必须知道一个东西,带标签的语句。
格式:
标签名:语句
break 标签名
continue:
结束本次循环,继续下次循环
return:
不是为了跳转出循环体,更常用的功能是结束一个方法,也就是退出一个方法,
跳转到上层调用的方法。

二、方法

也叫函数,就是完成特定功能的代码块。

格式:

修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2, ...){
方法体语句;
return 返回值;
}

返回值类型:就是功能结果的数据类型。当函数没有具体的返回值时,返回的返回值类型用void关键字表示,
函数中的return语句如果在最后一行,可以不写。
方法名:符合命名规则即可,方便我们调用。
参数:
实际参数:就是实际参与运算的
形式参数:就是方法定义上的,用于接收实际参数的。
参数类型:就是参数的数据类型。
方法体语句:就是功能的代码。
return:结束方法的
返回值:就是功能的结果,由return带给调用者。

方法的特点:

A:定义函数可以将功能代码进行封装
B:便于对该功能进行复用。
C:函数只有被调用才会被执行。
D:函数的出现提高了代码的复用性

要想写好一个方法,就必须明确两个东西:
返回值类型
结果的数据类型。
参数列表:
你要传递几个参数,以及每个参数的数据类型。

调用:
(一)有明确返回值的调用
A:单独调用,一般来说没有意义,所以不推荐
B:输出调用,但是不够好,因为我们可能需要针对结果进行进一步的操作。
C:赋值调用,推荐方案。
注意事项:
A:方法不调用不执行。
B:方法与方法是平级关系,不能嵌套定义。
C:方法定义的时候参数之间用逗号隔开。
D:方法调用时不用在传递数据类型。
E:如果方法有明确的返回值,一定要有return带回一个值。
(二)void类型返回值的调用。
只能单独调用。

方法重载:
在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同
与返回值类型无关。
参数列表不同:
参数个数不同
参数类型不同

重载的好处:
函数的功能一样,仅仅是参与运算的未知内容不同时,可以定义多函数,却使用统一函数名称,
这样方便阅读。 在调用时,虚拟机通过参数列表的不同来区分同名函数。

三、数组

1、一维数组

数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。
数组既可以存储基本数据类型,也可以存储引用数据类型。
数组的定义格式:
格式1:数据类型[] 数组名int[] a;定义一个int类型的数组a变量
格式2:数据类型 数组名[] int a[];定义一个int类型的a数组变量
两种格式效果是一样的,都是定义一个int数组,但是念法上有些小区别,推荐使用第一种。
初始化:
java中的数组必须先初始化,然后才能使用。
所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。
初始化方式:
动态初始化:初始化时只指定数组长度,有系统为数组分配初始值。
格式:数据类型[] 数组名 = new 数据类型[数组长度];
数组长度就是数组中元素的个数。
静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。
格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...};
 举例:int[] arr = new int[]{1,2,3};
简化格式:数据类型[] 数组名 = {元素1,元素2,...};
 举例:int[] arr = {1,2,3};
获取数组中的元素:
通过数组名[索引]
索引就是每个元素的编号,从0开始,最大编号就是数组的长度-1。

2、内存分配:
Java程序在运行时,需要在内存中的分配空间:为了提高运算效率,就对空间进行了不同区域的划分。
因为每一片区域都有特定的处理数据方式和内存管理方式。
栈:存储局部变量
在方法定义中或者方法声明上的变量都称为局部变量。 栈内存的数据用完就释放掉。
堆:存储new出来的东西
特点:  
A:每个new出来的东西都有地址值
B:每个变量都有默认值。
byte,short,int,long: 0
float,double: 0.0
char: '\u0000'
boolean: false
引用类型:null
方法区:本地方法区(和系统相关)
寄存器:(CPU使用)

数组操作常见小问题:
ArrayIndexOutOfBoundsException:数组索引越界异常。
原因:你访问了不存在的索引。
NullPointerException:空指针异常。
原因:数组已经不再指向堆内存了。
直接打印数组的引用变量,打印出来的结果是数组初始地址的哈希值。
"[I"表示的是int类型数组,"@"后面的内容表示数组初始地址的哈希值。 

3、二维数组

二维数组就是元素为一维数组的一个数组。

格式1:

数据类型[][] 数组名 = new 数据类型[m][n];

m表示这个二维数组有多少个一维数组

n表示每个一维数组的元素有多少个。

注意:
以下格式也可以表示二维数组

a:数据类型 数组名[][] = new 数据类型[m][n];

b:数据类型[] 数组名[] = new 数据类型[m][n];

格式2:

数据类型[][] 数组名 = new 数据类型[m][];

m表示一个二维数组有多少个一维数组。

列表没有给出,可以动态的给。这次是一个变化的列表。

格式3:

数据类型[][] 变量名 = new 数据类型[][]{{元素,...},{元素,...},...};

简化:

数据类型[][] 变量名 = {{元素,...},{元素,...},...};

举例:int[][] arr = {{1,2,3},{4,6},{6}};

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值