Java 学习路线-day05

一、方法

1.概念:一段特定功能的代码,需要多次执行的时候,就可以将这段功能代码使用{}进行包裹,取一个名称 这就是方法  ,每次访问这段代码的时候 就可以通过方法名来访问。

2.好处:

  a.提高代码可扩展性与可维护性

  b.提高代码的安全性(方法内的资源 外部是不能访问)

3.语法:

  访问修饰符 返回值类型 方法名称(参数列表){

      方法体

      return 返回值//可以是void、int。。。

  }

解释:

a.访问修饰符 ==> public static(现在)

  b.返回值类型 ==> 在定义方法的时候 就需要明确其数据类型方法返回值类型可以是基本数据类型 也可以是引用数据类型

  c.方法名称 ==>任意定义 通俗易懂 遵循小驼峰命名

  d.参数列表 ==>原料 执行方法体需要的前提条件 参数列表可有可无

  e. 方法体 ==> 表示具体执行的逻辑代码

  f.return 返回值 ==> 执行方法体业务逻辑代码 得到结果(产出物)

4.调用

语法:方法名称(参数列表) ,例如:showInfo(10,20)

注意:方法必须调用 才能执行

  方法都是平级的 没有上下级关系

  方法是定义在类中

  方法定义的时候 不能相互进行嵌套 但是在调用的时候可以相互调用

5.方法参数

  a.形参(其实就是变量声明):形式参数(象征性参数) ,在定义方法的时候使用形参 ,不同形参以英文逗号进行分割

  b.实参(其实就是给变量赋值):实际参数(实实在在的数据) ,在调用方法的时候使用实参。注意: 实参数据类型必须与形参数据类型保持一致

6.方法返回值(return )

  return ——用于结束方法

      a.没有返回值:方法使用void进行修饰的时候, 只能使用 return; 用于结束方法。

      b.有返回值: 方法如果有返回值 ,就必须使用return +数据; 用于结束方法并且返回数据。 方法返回是返回给调用者。

二、方法重载

1.重载规则:在同一个类中,方法名相同, 参数不同 ,与返回值与访问修饰符无关。

2.解释

  a.同一个类中 ==>重载的方法必须在同一个类中

  b.方法名相同 ==> 方法名相同(包括大小写)

  c.参数不同

    1)参数类型不同  

    2)参数个数不同

    注意点:与变量名称无关

  d.访问修饰符:public static(现不变)

  e.返回值:有没有返回值都可以,有返回值用return。

3.好处

a.没有方法重载之前 ,相同功能的逻辑代码 ,需要定义多个方法名来表示 ,增加程序记忆负担 不利于后期代码扩展与维护。

b.有方法重载之后 ,相同功能的逻辑代码, 定义一个方法名来表示 ,减轻程序员记忆负担 有利于后期代码扩展与维护。

4.jdk提供方法重载: 例:System.out.println()....

5.重载案例:

三、方法内存图

1.java中jvm是java虚拟机, java代码在运行的时候 ,会在内存中开辟空间 ,其中一块空间叫栈内存

2.栈内存

  a.特点:先进后出(如:弹夹)

  b.所有的方法在运行的时候,都会在栈内存中开辟空间

四、数组

1.概念:存储一组相同数据类型数据的容器(粮仓)

2.使用数组好处

  没有数组之前:定义大量的变量来存储成绩 ,使用大量的变量来存储 ,存取数据都比较麻烦(没有规律), 内存空间浪费

  有数组之后:定义这个容器来存储成绩 ,使用数组存储数据是有规律,存取比较方便 ,节省内存空间

3.特点:

    a.数组的长度是固定

    b.数组中的元素 ,既可以存储基本数据类型的数据 ,又可以存储引用数据类型数据

    c.   数组存取数据是根据下标(索引)(0 -数组长度-1)

4.1 动态初始化

1.概念:创建数组的时候,只开辟空间 ,不给数组赋值

2.语法:数组数据类型 [] 数组名称 = new 数组数据类型[长度]

3.解释

  数组数据类型 ==>数组中元素的数据类型 例如:12,13 整数

  [] ==> 一维数组

  数组名称 ==> 栈内存的引用

  = ==> 将堆内存的地址值赋值给栈内存的引用

  new ==> 表示在堆内存中开辟空间

  数组数据类型 ==>前后的数据类型必须保持一致

  [长度] ==> 表示存储元素的个数

4.例子: int [] nums = new int[5]

5.直接输出数组的名称(未赋值),打印数组的地址值。

  [I@1b6d3586

  [ ==> 表示数组

  I ==> int类型

  @ ==>表示连接符号 没有特殊的含义

  1b6d3586 ==> 根据地址值生成的hashcode值

6.动态初始化案例:

5.1 数组操作

1.数组操作:对数组进行赋值与取值 ,数组存取数据是有规律的 ,是根据索引(下标)来进行操作

2.索引范围:0~数组长度-1

3.数组长度:数组名称.length

4.赋值

  语法:数组名称[索引]=值 例如:nums[0]=10

5.取值

  语法: 数组名称[索引] 例如:nums[0]

6.数组默认值

  整数类型 ==>0

  小数类型 ==>0.0

  字符类型 ==> '\u0000' 空格

  布尔类型 ==> false

  引用数据类型 ==>null

6.1 静态初始化

1.静态初始化:在创建数组的时候 ,并且给数组进行赋值

2.语法:数组数据类型 [] 数组名称 = new 数组数据类型[]{元素罗列}

3.例如:int[]nums =new int[]{1,2,3,4}

4.注意点:

  a.前后的数据类型必须保持一致

  b.后面中括号不需要指定其长度

  c.静态初始化元素罗列是以逗号进行分割

5.简化方式

  数组数据类型 [] 数组名称 ={元素罗列}

  注意点:简化的方式必须写在一行

6.静态初始化案例:

五、数组内存图

1.1 JVM(虚拟机)内存划分

1.概念:

  硬盘:数据是永久进行存储(例如 c盘)

  内存:数据是临时进行存储(变量临时存储)

2.jvm将内存划分为五块(如房子) :堆 、栈 、方法区 、本地方法区和程序计数器。作用:方便对数据进行统一管理。

3.五块区间

  a.栈(重点)

    1) 特点: 先进后出  。有进栈(压栈)和 出栈(弹栈)操作。

    2) 所有方法在执行的时候都会在栈内存中开辟空间 ,所有的局部变量都会在栈内存开辟空间。

  b.堆(重点)

    1) 只要是new的资源 都会在堆内存中开辟空间

  c.方法区(重点)

    1) 所有的静态资源都会在方法区开辟空间

    2) 所有的类(Class)加载信息都会在方法区开启空间

  d.本地方法区

    调用c或者c++的方法

    public native int hashCode();

  e.程序计数器

    与cpu有关 ,控制程序的执行

2.1 一个数组创建内存图

3.1 两个引用指向同一个堆内存的内存图

六、数组的异常

1.异常:在程序运行期间发生的错误

2.数组常见的异常:a.空指针异常 b.数组下标越界异常

3.空指针异常

  a.NullPointerException

  b.产生原因:栈内存没有指向任何堆内存地址值 却要从堆内存中获取数据

  c.解决:在使用数组的时候 进行非空判断

4.数组下标越界异常

  a.ArrayIndexOutOfBoundsException

  b.产生原因:获取元素的索引值超出数组的索引范围 0 - 数组长度-1

  c.解决: 使用之前对索引进行判断

七、冒泡排序

八、插入数据

九、作业

1、

2、

3、

4、

5、

6、

7、选做题

8、选做题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值