美文网首页
JAVASE-DAY05

JAVASE-DAY05

作者: 某某宝 | 来源:发表于2019-04-28 08:31 被阅读0次

纲要:

一、return

1.有返回值类型的方法:1)结束方法  2)带出返回值

2.没有返回值类型的方法: 1)结束方法

不可达语句出现的情况:

1)一定会执行的return后出现的语句

2)死循环后出现的语句

3)break后面出现的语句

4)continue后面出现的语句

3.方法的兼容类型:

1.形参的数据类型>=实参的数据类型

2.返回值: return后面数据的类型<=返回值类型<=接受数据类型

4.方法的内存分析:

a.    程序运行, 首先要加载到内存  Dem001 . class 文件要进入到方法区中

b.    JVM调用main(), main() 方法压栈执行

c . 逐行执行主方法中的代码

d. 调EgetArea方法,getArea 方法进栈运行

e , 为方法getArea 传递参数

g . 执行getArea0 方法中的代码 :return w*h = 30

h . 把结果返回给方法的调者, 结束方法

i.      方法getArea() 执行完毕, 弹栈释放空间

j.  把返回值30赋值给变量result

j . main()执行完毕, 弹栈释放内存

二、方法的重载

1.定义:方法签名:方法名+参数列表-->一个方法唯一的表示-->一个类中不能存在多个相同的方法

    方法重载:

同一个类中

多个方法方法名相同

参数列表不同 :参数数据类型不同、个数不同、顺序不同(不同类型的参数)

2.重载方法的调用:

根据传递的实参决定调用的是重载方法中的哪一个

面向对象的三大特性: 封装  继承  多态

方法是一个类中封装的一种体现

方法的重载是一个类中多态的一种体现

3.方法重载的注意事项:

方法的重载和方法有无返回值无关

方法的重载和返回值类型无关

方法的重载和修饰符无关

方法的重载和参数的名字无关

方法重载只和方法签名相关

三、 方法的递归(了解):方法自己调用自己

临界条件:递归头  停止自己调用自己的条件

递归前进段:没有满足临界条件之前,自己调用自己

递归后退段:当满足临界条件,将结果返回给上一层

递归头: 临界条件

递归体: 自己掉用自己

四、数组:相同数据类型的有序集合

变量:存储单个数据

数组:存储多个数据

1.特点:

数组是一个引用数据类型

数组是一个容器,长度一旦确定不能改变

数组中数据类型相同

数组中数据是有序的

2.声明方式:

数据类型[] 数组名;

数据类型: 当前数组中所有数据的数据类型  基本数据类型|引用数据类型

数据类型 数组名[];  ---不推荐使用 

3.初始化:

3.1动态初始化:

数据类型[] 数组名=new 数据类型[长度];              创建指定长度的数组

数组中的数据存在默认值:

类型                                   默认值

byte/short/int/long                 0

double/float                           0.0

char                                        ' '

boolean                               false

引用数据类型                       null

3.2静态初始化:

数据类型[] 数组名=new 数据类型[]{值1,值2,值3...};值的个数决定创建的数组的长度

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

注意:简略形式不可以给数组重新赋值

4.操作数组中的数据: 

4.1使用: 

索引范围:  从0开始 ~ 数组名.length-1

格式:  数组名[索引]

长度:    数组名.length 

4.2数组的遍历:

普通for循环

增强for循环  for..each

for(数据类型 变量名i:容器名|数组名){

i就是数组中的每一个数据,不是索引  从前向后遍历

}

注意:  增强for循环只能获取值不能赋值(for each循环不能直接修改容器里的内容,因为操作的 是容器内元素的副本)

在java中,基本数据类型是值传递, 引用数据类型是地址传递

五、二维数组(了解):数组中放数组就是二维数

1.声明:

数据类型[][] 数组名;  --推荐

数据类型 数组名[][];

数据类型[] 数组名[];

2.初始化:

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

每一个第二维都是一样长度

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

每一个第一维的空间中的数据都是一个小数组,但是每一个第二维数组都没有创建

六、拓展

在内层循环中使用break跳出外层循环:

break默认是结束当前循环,想通过内层循环里的语句直接跳出外层循环,此时需要在break后通过标签指定外层循环。java中的标签是一个紧跟着英文冒号的标识符,与其他语言不同的是,java中的标签只有放在循环语句之前才有作用。需要注意的是,break后标签必须是一个有效的标签,即这个标签须在break语句所在循环的外层循环之前定义。如:

  outer: 

       for(int i=0;i<3;i++){ 

           for(int j=0;j<3;j++){ 

                 System.out.println(i+"---"+j); 

                //当j=2时结束outer标识符指定的循环 

                 if(j==2){ 

                      break outer; 

                 } 

           } 

       }

与break类似的,continue也可以紧跟一个标签,用于直接结束所标识循环的当次循环,重新开始下一次循环。

return也可以结束一个循环,但与continue和break不同的是,return直接结束整个方法,不管这个return处于多少层循环之内。

转载地址:https://songguoliang.iteye.com/blog/1755537

2.以下两种赋值是可以编译通过的

int a,b;

a=b=10;

a=(b=10);

3.为什么字符数组可以直接打印数组中的内容

char[] ch={'a','b','c'};

    System.out.println(ch);

输出结果为abc

char类型的数组就相当于一个字符串。

因为输出流System.out是PrintStream对象,PrintStream有多个重载的println方法,其中一个就是public void println(char[] x),直接打印字符数组的话,不像int[]等其他数组,它会直接调用这个方法来打印,因而可以打印出数组内容,而不是地址。

小知识:

字符串的话,是不可以变它的内容的。字符数组的话,你是可以改变数组中包含的内容的。

往深入了说,字符串的底层也是用数组实现的。要说使用的区别,字符串方便一些,数组灵活一些。

相关文章

  • JAVASE-DAY05

    纲要: 一、return 1.有返回值类型的方法:1)结束方法 2)带出返回值 2.没有返回值类型的方法: 1)...

网友评论

      本文标题:JAVASE-DAY05

      本文链接:https://www.haomeiwen.com/subject/vwyrnqtx.html