Java第三周学习小结
2021/10/3 9:40:40
本文主要是介绍Java第三周学习小结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.跳转控制语句-----return
定义
return-----返回具体的结果(结束方法);很少单独使用,用在具有具体返回值类型的方法中.
return 结果值;
2.方法
(1)方法的概念
方法就是表示特定功能的一段代码,使用功能代码块{}将核心内容包起来,并为其起一个名字(符合标识符命名)即可.
(2)方法的定义
<1>有具体返回值的方法
定义格式:固定格式
权限修饰符 static 返回值类型 方法名(形式参数类型1 变量1,形式参数类型2 变量2...){ 功能代码 return 结果; }
public static 返回值类型 方法名(形式参数类型1 变量1,形式参数类型2 变量2....){ 功能代码 return 结果; }
解释:
权限修饰符:现在使用的public为公开的,权限足够大的,后期还会学别的;
static:面向对象在学习,目前阶段必须加上static;
返回值类型:数据类型;
方法名:需要见名知意,符合标识符命名规范;
形式参数类型:数据类型;
变量名:需符合标识符命名规范.
有返回值类型的方法调用:
1)单独调用 add(a,b) ; 没有输出结果 2)输出调用:可以用,不建议用,因为如果需要将结果进一步操作,写死,不太好! System.out.println("两个数据之和是:"+add(a,b)) ; 3)赋值调用:推荐 int result = add(a,b) ; System.out.println("两个数据之和是:"+result); 语法:返回值类型 变量名 = 方法名(实际参数1,实际参数2...);
写程序时的两个明确:
(1)明确返回值类型 (2)明确参数类型以及参数个数
<2>没有具体返回值的方法
定义格式:固定格式
权限修饰符 静态修饰符static void 方法名(形式参数类型1 变量1,形式参数类型2 变量2...){ 输出语句/数据交换 } 注意:用void代替了返回值类型
无返回值方法的调用:
1)单独调用:推荐 方法名(实际参数列表) ; 2)输出调用:不行 3)赋值调用:不行
(3)Java中定义方法和调用方法的注意事项
<1>方法和方法是平级关系,在一个方法中不能嵌套定义另一个方法
<2>Java为强类型语言,定义方法的时候,形式参数类型必须携带,不能省略
<3>调用方法的时候,实际参数不需要携带数据类型
<4>定义方法的时候,有{左大括号的地方不能有分号;
有;号的地方不能有{左大括号,会显示这个方法缺少方法主体,没有意义.
3.方法重载(overLoad)
(1)定义
一个类中可以定义多个相同名称的方法,多个方法名称相同,参数列表不同,与返回值无关.
(2) 注意事项
1)参数个数不同 2)参数类型不同 3)考虑类型顺序
(3)目的
方法重载的目的:就是为了让这个功能扩展性更多.
4.数组
(1)数组的定义
一组连续的存储空间,存储多个相同数据类型的值.
(2)数组定义格式
数据类型[] 数组名称; eg: int[] arr ; 定义了一个int类型的数组变量arr
数据类型 数组名称[]; eg: int arr[] ; 定义了一个int类型的arr数组变量
(3)数组的初始化
<1>动态初始化
动态初始化:我们给定数组的长度,元素由系统(Jvm)默认初始化;
数据类型[] 数组名称 = new 数据类型[长度] ; 推荐第一种 eg: int[] arr = new int[3] ; 数据类型 数组名称[] = new 数据类型[长度] ; eg: int arr[] = new int[3] ;
<2>静态初始化
静态初始化:静态初始化是指给出具体的长度内容,系统默认分配长度.
格式
数据类型[] 数组名称 = new int[]{元素1,元素2,元素3,.....} ; 推荐使用 数据类型 数组名称[] = new int[]{元素1,元素2,元素3,.....} ; 简化格式:书写代码简单(注意此格式不能换行) 数据类型[] 数组名称 = {元素1,元素2,元素3,.....} ; 数据类型 数组名称[] = {元素1,元素2,元素3,.....} ;
注意:要么动态初始化,要么静态初始化,不能动态和静态一起使用.
(4)数组元素的访问
数组名称[索引值];索引值从0开始 arr[0];//访问数组第一个元素
int[] arr = new int[3] ;//jvm系统默认对3个初始化 解析格式: =左边: int:数组中存储的int数据类型 []:数组:一维数组(默认) arr:变量名(数组的在内存中的对象名称) =右边: new:表示创建对象 int:表示存储的数据int类型 [3]:数组中存储的3个元素:(长度) System.out.println(arr) ; //[I@6d06d69c :地址值 [:表示一维数组 I:int数据类型 @:地址值标记 6d...:十六进制数据
5.引用数据类型常见异常
(1)编译时期异常
jvm检查语法不通过; 语法格式存在问题(例如数组和变量格式写错,变量被定义多次等)
(2)运行时期异常
开发者代码书写不严谨出现的问题
eg1:java.lang.ArrayIndexOutOfBoundsException:数组角标越界异常
出现的原因:访问了数组中不存在的角标(索引值)
如何解决:检查代码,更改索引值
eg2:java.lang.NullPointerException:空指针异常
引用类型的默认值都是null;
String s = null ; 字符串是一种特殊的引用类型
出现的原因:某一个对象已经为空了,null(没有堆内存地址),这个时候还要去访问元素或者调用
这个对象的方法,那么就出现空指针;
如何解决:
使用逻辑判断语句,对该对象进行非空判断
6.经典面试题
(1)基本数据类型做形式参数特点:基本类型作为形式参数传递特点:形式参数的改变不会影响实际参数.当方法结束后,就消失了(临时变量-----形式参数);
(2)引用数据类型做形式参数特点:形式参数的改变,会直接影响实际参数.是空间地址值的传递,当方法结束了,对象不会被立即回收,等待垃圾回收器回收(GC).
注意:String为特殊引用类型,他的效果和基本数据类型相同.
class Demo{ public static void main(String[] args){ int a = 10 ; int b = 20 ; System.out.println("a:"+a+",b:"+b) ; //10,20 change(a,b) ; System.out.println("a:"+a+",b:"+b) ; //10,20 System.out.println("--------------------------") ; int[] arr = {1,2,3,4,5} ; System.out.println(arr[1]) ; //2 System.out.println("--------------------------") ; change(arr) ; System.out.println(arr[1]) ;//4 } public static void change(int a,int b){ a = b ; b = a+b ; System.out.println("a:"+a+",b:"+b) ; //20,30 } public static void change(int[] arr){ for(int x = 0 ; x < arr.length;x++){ if(arr[x] % 2== 0){ arr[x] = arr[x]*2 ; } } } }
7.数组高级排序-----冒泡排序
(1)冒泡排序思想:两两比较,将较大的值往后放,第一轮比较完毕后,最大值出现在最大索引处,依次进行第2轮,第3轮比较...就可得到最终结果.每一次比较,下一次就会减少一次,比较次数是数组长度-1次;
for(int i = 0;i < arr.length - 1;i++){ for(int j = 0;j < arr.length -1 - i;j++){ 元素互换 if(arr[j] > arr[j + 1]){ int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } }
8.面向对象的思想特点
(1)更符合我们生活中思想行为习惯
(2)让更复杂事情简单化
(3)角色发生变化,从执行者变为指挥者
<经典面试题>:什么是面向对象:阐述面向对象思想特点加生活中例子.
java语言面向对象的三大特征:封装,继承,多态
9.类
(1)类的定义:能够描述一组事物的属性和行为的集合. 能够描述现实中真实存在的事物.
java中最基本的单元: 类-----------------事物
成员变量---------描述事物的属性
成员方法----------描述事物的行为(非静态的)
(2)成员变量------------在类中,方法外
成员方法-------------之前怎么定义,现在还怎么写,不过去掉static关键字
public 返回值类型 方法名(形式参数列表){ 功能代码块 return 具体的结果; }
public void 方法名(形式参数列表){ 输出打印 }
<注意>定义方法时的两个明确
10.类与对象的关系
类:能够描述一组事物的属性和行为的集合;类-----描述现实世界真实存在"事物"
对象:描述具体的事物,事物为泛指,描述具体的事物,通过代码创建当前类的对象.
<注意>类是一个泛指,对象才是当前事物的具体体现.
<代码体现>
类名 对象名 = new 类名(); //给具体事物属性赋值 对象名.成员变量 = 根据类型赋值; //调用具体事物的行为 对象名.成员方法名();
11.局部变量与成员变量的区别
(1)在类中书写位置不同
局部变量:在方法定义中或者是方法声明上.
成员变量:在类的内部,方法的外部.
(2)在内存中的位置不同
局部变量:在栈内存中
成员变量:在堆内存中
(3)生命周期不同
局部变量:随着方法调用而存在,随着方法调用结束而消失
成员变量:随着对象的创建而存在,随着对象的调用完毕,不会立即消失,等待垃圾回收器空闲的时候回收.
(4)初始化时机不同
局部变量:可以先定义,使用之前必须初始化;要么直接初始化.
成员变量:可以不赋值,系统默认对成员变量初始化;
也可以通过对象名.成员变量 = 值 完成赋值.
11.典型例题(形式参数为类)
如果一个方法的形式参数是一个类,实际参数需要传递的当前类的具体对象
class Student{ public void study(){ System.out.println("爱学习,爱生活!") ; } } class StudentDemo{ public void method(Student s){//Student student = new Student() ; s.study() ; //student.study(); } } class StudentTest{ public static void main(String[] args){ //需求: //1)要访问StudentDemo类中的method方法 //2)调用的时候,实际参数如何书写呢? StudentDemo sd = new StudentDemo() ; Student student = new Student() ; Student student = new Student() ; sd.method(student); } }
12.匿名对象
(1)定义
匿名对象:名义名字的对象.
(2)定义格式及访问格式
<1>定义: new 类名() ; eg: new Student();
<2>访问: 访问类的成员变量 new 类名().成员变量名;
访问类的成员方法:没有具体返回值类型: new 类名().成员方法名() ;
(3)好处
<1>匿名对象可以作为对象传递
<2>节省内存空间
<3>开发中,匿名对象一般 使用"一次即可",使用完毕就立即被垃圾回收器回收
<4>大多用在手机端,节省内存空间
13.封装
(1)封装关键字private:私有的,不能直接访问的;
(2)封装的概念:为了保证类属性的安全性,所有的属性都必须加入private关键字,并且对外提供公共访问方法间接对成员变量(属性)进行赋值;setXXX()/getXXX():都是public:权限足够大.
(3)封装的特点:被private修饰的成员变量或者是成员方法,只能在本类中访问;
外界类是不能直接访问的,间接可以通过公共的成员方法访问!
14.this关键字
当局部变量名称和成员变量名称一致时(局部变量隐藏了成员变量),Java提供了一个关键字:this;
this:代表当前类对象的地址值引用.
15.构造方法
(1)构造方法的定义:
构造方法:构造方法是一种特殊的方法,名字和类名完全相同.
(2)构造方法的特点:
<1>方法名和类名完全一样
<2>构造方法没有返回值类型
<3>构造方法连void都没有
注意:构造方法支持方法重载.
(3)构造方法的作用
构造方法就是对类中的成员属性进行初始化.
(4)构造方法的分类
<1>无参构造方法: public Student(){}; <2>有参构造方法: public Student(String name,int age){};
(5)构造方法的注意事项
<1>当开发者没有提供无参构造方法,也没有提供有参构造方法,系统永远给我们提供无参构造方法;
<2>如果我们提供了有参构造方法,系统将不会默认提供无参构造方法.
16.给成员变量(private修饰)赋值的几种方式
(1)公共访问方法赋值
setxxx(xxx);
(2)有参构造方法进行赋值
public 类名(形式参数){ this.name = name; this.age = age; }
17.一个标准类的内容
(1)成员变量: 私有化 private
(2)构造方法: 无参/有参 构造方法
(3)成员方法: setxxx(xxx); getxxx(xxx); 其他方法
这篇关于Java第三周学习小结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-12百万架构师第十五课:源码分析:Spring 源码分析:SpringMVC核心原理及源码分析|JavaGuide
- 2025-01-11有哪些好用的家政团队管理工具?
- 2025-01-11营销人必看的GTM五个指标
- 2025-01-11办公软件在直播电商前期筹划中的应用与推荐
- 2025-01-11提升组织效率:上级管理者如何优化跨部门任务分配
- 2025-01-11酒店精细化运营背后的协同工具支持
- 2025-01-11跨境电商选品全攻略:工具使用、市场数据与选品策略
- 2025-01-11数据驱动酒店管理:在线工具的核心价值解析
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide