个人总计

经过两周的学习,发现自身也暴露出很多的问题,很多知识点没有记住,对上周的内容
也没有很好的消化理解,需要去认真解决自身问题多加练习.
以下对本周知识内容做总结

if...else...格式和三元运算符的区别?

三元运算符只是一个运算符号,不是流程控制语句,在三元中不能输出打印值,
可以操作具体的数据值(结果最终是数据值);
而if...else...流程控制语句,范围远远大于三元运算符
既可以使用具体数据值,也可以是打印内容;
三元运算符能够使用的一定能够if...else...

if...else...能够实现的,不一定能够使用三元!

例题

*

需求:默认int
键盘录入月份的值,判断季节
3,4,5 春季
6,7,8 夏季
9,10,11 秋季
12,1,2 冬季
*/
//导包
import java.util.Scanner ;
class IfTest{
public static void main(String[] args){
//创建键盘录入对象
Scanner sc = new Scanner(System.in) ;

//提示并录入数据
System.out.println("请你输入一个月份的值:") ;
int month = sc.nextInt() ;

if(month<1 || month>12){
System.out.println("对不起,月份数据非法!") ;
}else if( month== 3 || month == 4 || month==5){
System.out.println("春季") ;
}else if(month == 6 || month == 7 || month == 8){
System.out.println("夏季") ;
}else if(month == 9 || month == 10 || month==11){
System.out.println("秋季") ;
}else{
System.out.println("冬季") ;
}
}
}

Java第二周总结_数据类型

switch语句使用的注意事项:

1)case语句里面是有break,
如果没有书写break,会造成"case传统"
2)case语句后面的值只能是常量值,不能是变量值
(Java是一个强类型语言:语法结构很严谨)
3)关于default语句
它可以在语句中的任何位置,不影响switch语句的执行流程!
但是如果在语句中,那么break不要省略!
如果default语句它在语句的末尾,break可以省略
4)switch语句的结束条件:
1)语句break结束
2)程序默认执行到末尾!(顺序结构语句都是依次由上而下,末尾结束!)

java提供循环结构语句之for循环

for(初始化语句;条件表达式;控制体语句或步长语句){
循环体语句;
}

执行流程:
1)先初始化语句进行赋值
2)判断条件表达式是否成立,如果成立,执行循环体语句
2.1)继续执行控制台语句或者步长语句 对初始化语句的变量进行自增或者自减
2.2)继续判断条件表达是否成立,如果成立,按照上面 这种方式执行;
2.3)如果变量自增或者自减到条件表达式不成立为止,循环语句结束!

while循环

格式:
基本格式:
while(条件表达式){
循环体语句;
控制体语句或者步长语句;
}
扩展格式:(使用多)
初始化语句:
while(条件表达式){
循环体语句;
控制体语句或者步长语句;
}

执行流程:
1)初始化语句进行变量赋值
2)判断条件表达式是否成立,
成立,执行循环体语句,依次执行控制体语句(对变量控制)
继续回到2)进行判断
...
...
3)条件表达式不满足,循环结束!

while和for的区别?

共同点:
都是使用循环思想解决一些问题
不同点:
1)格式本身不同
for(初始化语句;条件表达式;控制体语句){
循环体语句;
}

初始化语句;
while(条件表达式){
循环体语句;
控制体语句;
}
2)是否明确循环次数
for循环:明确循环次数优先for循环,(for还是很频繁使用的)
while循环:不明确循环次数,使用while循环
3)从内存角度考虑销毁不同:
for循环结束,里面的变量及时释放了,所以不能在访问for中的变量
whlile循环结束,依然可以访问里面变量,
所以消耗资源相对for循环大一些!

常见的两种死循环格式

for(;;){  //jdk源码中比较多
循环体...
}

while(true){ //推荐
循环体...
}

利用死循环解决一些问题!
死循环:肯定需要利用一些条件,当达到某种条件的时候,结束循环(break;中断,结束!)

do-while 循环 

初始化语句;
do{
循环体语句;
控制体语句;
}while(条件表达式) ;

执行流程:
1)初始化语句进行赋值
2)循环体语句,--->-完成条件判断---控制体语句
继续判断,当条件不满足,循环结束!

如果条件直接不满足,循环体至少执行一次;
这也是for/while最大的区别

dowhile 循环开发中很少使用这个格式

跳转控制语句

break   continue   return 
break:结束中断的意思
两种应用场景:
1)循环语句中使用,结束循环用的
2)switch语句中使用,结束switch
不能单独使用,不能脱离上面两种场景!

早期使用:break 标签名称; 结束指定的循环

在for循环嵌套中,给for循环的前面加上一个 "标签名称:"

wc:代表外层循环
nc:代表内层循环

wc:for(初始化语句;条件表达式;控制体语句){
nc:for(初始化语句2;条件表达式2;控制体语句2;){
//循环体;
//当达到我指定的条件,
break wc;//结束外层循环了
}
}

continue:继续执行(结束当前循环,立即进入下一次循环)

不能单独使用

``return :返回
很少单独去使用(不建议),后面一般都会有返回结果值;

return应用场景:
在Java中的方法(函数)中去使用,目的就是结束这个方法,并且还有返回结果;

   什么是Java中的方法(函数)?

方法: 
就是一个代码块{},给{}起一个名字(方法名),然后方法中逻辑书写
(根据你的实际需求)
以后见到同样一个功能代码块,直接调用方法名即可!

在Java中有返回值类型的方法的定义以及调用格式中注意事项:

1)方法和方法平级关系,不能在一个方法中去定义另一个方法!
2)定义方法的返回值类型和main方法中调用方法的时候,接收结果类型不匹配!

3)Java是强类型语言,在定义的方法时候,
形式参数名前面必须有参数类型
4) 必须有return语句,没有就会编译报错!

5)定义方法的时候,有{号地方不能有分号;有分号;,不能有{左大括号

构造方法

什么是构造方法?
1)方法名和类名一致
2)没有具体返回值类型
3)连void都没有

构造方法是可以重载!


构造方法的作用:
给类的成员进行数据初始化!

注意事项:
1)一个类中,如果没有任何构造方法,那么系统(jvm)自动会给我们提供无参构造方法!
2)一个类中,只提供有参构造方法,那么系统不会无参构造方法,此时,建议我们永远给出无参构造方法!否则,就出现问题!

创建对象的时候固定格式:
类名 对象名 = new 类名() ;

数组定义以及初始化

定义格式:
1)数据类型[] 数组名称;
2)数据类型 数组名称[] ;
举例:
int[] arr; 定义一个int类型的数组arr
int arr[] ; 定义一个int类型的arr数组
初始化:
1)动态初始化
给定数组长度,系统(jvm)默认分配数组元素内容;


格式:
数据类型[] 数组名称 = new 数据类型[数组长度] ;
数据类型 数组名称[] = new 数据类型[数组长度] ;

数组的第二种格式进行初始化:
静态初始化:
给定数组元素,长度由系统给定
原本格式:
数据类型[] 数组名称 = new 数据类型[]{元素1,元素2,元素3....} ;
数据类型 数组名称[] = new 数据类型[]{元素1,元素2,元素3....} ;

简写格式
数据类型[] 数组名称 ={元素1,元素2,元素3....} ;
数据类型 数组名称[] = {元素1,元素2,元素3....} ;
举例:
int[] arr = {1,2,3} ;
arr[0] = 1 ;
arr[1] = 2 ;
arr[2] = 3 ;

注意事项:
不能既动态初始化,又静态初始化(动静结合)
int[] arr = new int[3]{1,2,3} ;//错误

数组高级排序算法之:冒泡排序

思想:
两两比较,将大的值往后方法,第一次比较完毕,最大值出现在最大索引处!

private关键字的特点:

1)被private修饰的成员变量/成员方法(非静态),
只能在本类中访问,外界类不能访问!
2)虽然被私有修饰的成员变量以及成员方法(非静态)不能直接访问,但是
都可以间接的通过"public"公共访问访问!

局部变量和成员变量的区别?

区别:
1)类中的书写位置不同
成员变量:在类中,方法外
局部变量:在方法定义中或者方法声明上
2)jvm内存位置不同
成员变量:在堆内存中
局部变量:在栈内存中
3)生命周期不同:
成员变量:随着对象的创建而存在,随着对象的创建完毕并且使用完
等待垃圾回收器回收(不会立即回收)而消失!
局部变量:随着方法调用而存在,随着方法调用结束而消失
4)初始化值不同:
成员变量:存在系统默认初始化,也可以显示初始化
局部变量:总之:在使用局部变量之前,必须赋值,不赋值不行