Java12-day03【(类名、抽象类名、接口名)作为形参和返回值、内部类、常用API(Math、System、toString()、Arrays)、冒泡】
- 视频+资料(工程源码、笔记)【链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg 提取码:zjxs】
- Java基础--学习笔记(零起点打开java世界的大门)--博客汇总表
目 录
01_类名作为形参和返回值
1.1、类名作为形参和返回值
02_抽象类名作为形参和返回值
1.2、抽象类名作为形参和返回值
03_接口名作为形参和返回值
1.3、接口名作为形参和返回值
04_内部类
1.1、内部类概述
05_成员内部类
1.2、成员内部类
06_局部内部类
1.3、局部内部类
07_匿名内部类
1.4、匿名内部类
08_匿名内部类在开发中的使用
1.5、匿名内部类在开发中的使用
09_Math
1.1、Math类概述
1.2、Math类的常用方法
10_System
2.1、System概述
2.2、System类的常用方法
11_Object类的toString()方法
3.1、Object类的概述
12_Object类的equals()方法
3.2、Object类的常用方法
13_冒泡排序原理
4.1、冒泡排序
14_冒泡排序代码实现
15_Arrays
4.2、Arrays类的概述和常用方法
01_类名作为形参和返回值
1.1、类名作为形参和返回值
1、类名作为方法的形参
- 方法的形参是类名,其实需要的是该类的对象。
- 实际传递的是该对象的【地址值】
2、类名作为方法的返回值
- 方法的返回值是类名,其实返回的是该类的对象。
- 实际传递的,也是该对象的【地址值】
02_抽象类名作为形参和返回值
1.2、抽象类名作为形参和返回值
- 方法的形参是抽象类名,其实需要的是该抽象类的子类对象。
- 方法的返回值是抽象类名,其实返回的是该抽象类的子类对象。
03_接口名作为形参和返回值
1.3、接口名作为形参和返回值
- 方法的形参是接口名,其实需要的是该接口的实现类对象。
- 方法的返回值是接口名,其实返回的是该接口的实现类对象。
04_内部类
1.1、内部类概述
05_成员内部类
1.2、成员内部类
按照内部类 在类中定义的位置不同,可以分为如下两种形式:
- 在类的成员位置:成员内部类
- 在类的局部位置:局部内部类
成员内部类的定义位置
- 在类中方法,跟成员变量是一个位置。
成员内部类,外界如何创建对象使用呢?(外界创建成员内部类格式)
- 格式:外部类名.内部类名 对象名 = 外部类对象.内部类对象;
- 举例:Outer.Inner oi = new Outer().new Inner();
成员内部类的推荐使用方案
- 将一个类,设计为内部类的目的,大多数都是不想让外界去访问,所以内部类的定义应该私有化,私有化之后,再提供一个可以让外界调用的方法,方法内部创建内部类对象并调用。
使用 成员内部类,就是为了 成员内部类中的内容隐藏起来,并不想让外界直接看到(不能直接访问)。
∴ 内部类的修饰符,一般用private,而不是public。【“ Outer.Inner oi = new Outer().new Inner(); ” 失效!!!】
06_局部内部类
1.3、局部内部类
局部内部类 定义位置
- 局部内部类是在方法中定义的类。
局部内部类 调用方式
- 局部内部类是在方法中定义的类,外界无法直接使用,需要在方法内部创建对象并使用。
- 该类可以直接访问外部类的成员,也可以访问方法内的局部变量。
07_匿名内部类
1.4、匿名内部类
重写方法:继承类或实现接口。
new xxx:说明是一个对象,但是对象没有名字。
匿名内部类,本质是一个对象,继承类或实现接口。
多次调用匿名内部类的方法:
匿名内部类是一个对象,对象有返回值类型。此匿名内部类实现了Inter接口,并重写了接口的show()方法,因此 匿名内部类{}整体可以看成Inter的一个实现类对象,既然是实现类对象,所以应该可以按照多态的形式 赋值给Inter接口。
08_匿名内部类在开发中的使用
1.5、匿名内部类在开发中的使用
多种动物,每次都要创建一个类,太麻烦了,∴ 采用 匿名内部类。
匿名内部类在开发中的使用:当发现某个方法需要 接口或抽象类的子类对象,可以传递一个匿名内部类过去,来简化传统的代码。
09_Math
1.1、Math类概述
Math在java.lang包下,不用导包就可以直接使用。
Math没有构造方法,但方法用static修饰,可以直接通过类名调用方法。
1.2、Math类的常用方法
10_System
2.1、System概述
System包含几个有用的类字段和方法,它不能被实例化(不能创建对象)。
2.2、System类的常用方法
11_Object类的toString()方法
3.1、Object类的概述
Object类概述
- Object是类层次结构的根,每个类都可以将Object 作为超类。没有继承任何类,Object是任何类的祖宗类。
所有对象(包括数组)都实现了这个类的方法。
- 所有类都直接或者间接的继承自该类,换句话说,该类所具备的方法,所有类都会有一份。
Object构造方法
- public Object()
查看方法源码的方式
- 双击选中方法,右键 -> Go To -> Declaration
- 双击选中方法,按下Ctrl + B
重写toString方法的方式
- Alt + Insert 选择toString
- 在类的空白区域,右键 -> Generate -> 选择toString
toString方法的作用:
- 以良好的格式,更方便的展示对象中的属性值。
回想面向对象中,为什么说子类的构造方法默认访问的是父类的无参构造方法( super(); )?
- 因为它们的顶级父类(Object)只有无参构造方法。
查看方法源码的方式
- 双击选中方法,右键 -> Go To -> Declaration
- 双击选中方法,按下Ctrl + B
建议所有子类覆盖(重写)此方法:toString()
怎么重写呢?自动生成即可。
重写toString方法的方式
- Alt + Insert 选择toString
- 在类的空白区域,右键 -> Generate -> 选择toString
12_Object类的equals()方法
3.2、Object类的常用方法
equals方法的作用
- 用于对象之间的比较,返回true和false的结果。
- 举例:s1.equals(s2); // s1和s2是两个对象
重写equals方法的场景
- 不希望比较对象的地址值,想要结合对象属性进行比较的时候。
重写equals方法的方式
- Alt + Insert 选择 equals() and hashCode(),IntelliJ Default,一路next,finish即可
- 在类的空白区域,右键 -> Generate -> 选择equals() and hashCode(),后面的同上。
重写equals()方法
按“Alt+Insert”:
13_冒泡排序原理
4.1、冒泡排序
排序:将一组数据按照固定的规则进行排序。
冒泡排序概述
一种排序的方式,对要进行排序的数据中相邻的数据进行两两比较,将较大的数据放在后面,
依次对所有的数据进行操作,直至所有数据按要求完成排序。
如果有n个数据进行排序,总共需要比较n-1次。
每一次比较完毕,下一次的比较就会少一个数据参与。
14_冒泡排序代码实现
package com.itheima_01;/*冒泡排序:一种排序的方式,对要进行排序的数据中相邻的数据进行两两比较,将较大的数据放在后面,依次对所有的数据进行操作,直至所有数据按要求完成排序*/
public class ArrayDemo {public static void main(String[] args) {//定义一个数组int[] arr = {24, 69, 80, 57, 13};System.out.println("排序前:" + arrayToString(arr));//第一次比较for(int i=0; i<arr.length-1-0; i++) {//ArrayIndexOutOfBoundsExceptionif(arr[i] > arr[i+1]) {int temp = arr[i];arr[i] = arr[i+1];arr[i+1] = temp;}}System.out.println("第一次比较后:" + arrayToString(arr));//第二次比较for(int i=0; i<arr.length-1-1; i++) {//ArrayIndexOutOfBoundsExceptionif(arr[i] > arr[i+1]) {int temp = arr[i];arr[i] = arr[i+1];arr[i+1] = temp;}}System.out.println("第二次比较后:" + arrayToString(arr));//第三次比较for(int i=0; i<arr.length-1-2; i++) {//ArrayIndexOutOfBoundsExceptionif(arr[i] > arr[i+1]) {int temp = arr[i];arr[i] = arr[i+1];arr[i+1] = temp;}}System.out.println("第三次比较后:" + arrayToString(arr));//第四次比较for(int i=0; i<arr.length-1-3; i++) {//ArrayIndexOutOfBoundsExceptionif(arr[i] > arr[i+1]) {int temp = arr[i];arr[i] = arr[i+1];arr[i+1] = temp;}}System.out.println("第四次比较后:" + arrayToString(arr));for(int x=0; x<arr.length-1; x++) {for(int i=0; i<arr.length-1-x; i++) {if(arr[i] > arr[i+1]) {int temp = arr[i];arr[i] = arr[i+1];arr[i+1] = temp;}}}System.out.println("排序后:" + arrayToString(arr));}//把数组中的元素按照指定的规则组成一个字符串:[元素1, 元素2, ...]public static String arrayToString(int[] arr) {StringBuilder sb = new StringBuilder();sb.append("[");for (int i = 0; i < arr.length; i++) {if (i == arr.length - 1) {sb.append(arr[i]);} else {sb.append(arr[i]).append(", ");}}sb.append("]");String s = sb.toString();return s;}
}
15_Arrays
4.2、Arrays类的概述和常用方法
private修饰的无参构造:外界无法通过构造方法创建对象。强制要求:通过类名来访问成员方法。
private Arrays {} :如果一个类没有无参构造方法,系统将会自动提供一个无参构造方法。Arrays的方法,用static修饰,强制要求用类名访问。
在帮助文档中,没有看到构造方法,不代表这个类没有构造方法,因为系统会给构造方法。--> 看源码(构造方法)
Java12-day03【(类名、抽象类名、接口名)作为形参和返回值、内部类、常用API(Math、System、toString()、Arrays)、冒泡】相关推荐
- [Java基础]抽象类和接口名作为形参和返回值
- 测试私有方法_Java基础之抽象类、接口作为方法参数和返回值
不同修饰符使用细节 常用来修饰类.方法.变量的修饰符 public 权限修饰符,公共访问, 类,方法,成员变量 protected 权限修饰符,受保护访问, 方法,成员变量 默认什么也不写 也是一种权 ...
- 重学Java(035)——Java基础知识(类作为成员变量、接口作为成员变量、接口作为方法参数和返回值类型)
学习内容:三种引用类型用法 一.类作为成员变量 二.接口作为成员变量 三.接口作为方法参数和返回值类型 实际的开发中,引用类型的使用非常重要,也是非常普遍的.我们可以在理解基本类型的使用方式基础上,进 ...
- C语言基础入门48篇_20_函数入门:为什么使用函数?(函数使得程序模块化 使用函数封装细节,使得程序员只要面向函数的接口编程(参数与返回值),而不用关心函数内部细节)
菜鸟和高手都会基本,那菜鸟为什么是菜鸟,高手为什么是高手呢?很大的区别在于,高手写的程序[结构性]更好,更容易维护.而函数就是C语言结构化的一种手段. 函数可以将大的计算任务划分为多个较小的任务(解耦 ...
- 前端获取接口状态码400的返回值
前端获取接口状态码400的返回值 .catch((err) => {console.log(err.message);console.log(err.response.data);console ...
- 类名作为方法和形参的返回值
class Teacher{public void show(Student s){//类名作为形参,将show方法指向Students类 s.study();}Student getStudent( ...
- 包 权限修饰符 final 常量 枚举 抽象类 接口 多态 内部类 常用API 正则表达式 Lambda
包 什么是包? 包是用来分门别类的管理各种不同类的,类似于文件夹.建包利于程序的管理和维护. 建包的语法格式:package 公司域名倒写.技术名称.报名建议全部英文小写,且具备意义. package ...
- App前端及后端接口,模拟数据及返回值
App前端及后端接口,模拟数据 :接口文档 目录 1. 全局状态码 6 2. 前台 7 2.1. 首页 7 2.1.1. 商品分类列表接口 7 2.1.2. 展示轮播图接口 9 2.1.3. 展示广告 ...
- JAVA学习笔记第八天——接口作为方法参数和返回值、多态、内部类
一.回顾: 权限修饰符: public -> protected -> (default) ->private 重写: 1.方法名和参数列表一致 2.子类中重写的方法, 返回值类型[ ...
最新文章
- html table增加删除编辑,一个可以增加和删除行的table并可编辑表格中内容
- 远程连接server问题
- 高通量数据中批次效应的鉴定和处理(五)- 预测并校正可能存在的混杂因素...
- C - How Many Tables - HDU-1213
- 【译文】用Spring Cloud和Docker搭建微服务平台
- Julia: Flux.jl尝试
- 软件著作权算法软件设计说明书_软件著作权说明书模板
- java bartender_BarTender Web Print Server可用的打印方法
- 一起来看流星雨在线观看/在线播放/全集下载/在线直播全集
- 三维模型免费查看器(AnyCAD Viewer)
- ISA防火墙策略配置
- 机器学习 卷积神经网络 Convolutional Neural Network(CNN)
- hexo网页相册页面的制作
- 这些大学奖学金覆盖率100%!
- 产品开发中如何衡量产品价值,来做优先级排序?
- 《程序员养成记》第1集 做程序员需要天赋吗?
- 相似对角化的意义(转载)
- C语言 —— for循环(一)
- TvInput Cec key事件传递流程
- 和AI一起玩儿剧本杀:居然比我还入戏
热门文章
- 集成android studio,Android Studio集成
- java语言编程基础_Java编程基础02——Java语言基础
- java动态生成柱状图3D_在android上动态实现ichartjs的3D柱形图
- 【小白学习PyTorch教程】十五、BERT:通过PyTorch来创建一个文本分类的Bert模型
- 七十八、 回溯法解决八皇后问题
- 八十一、使用Springboot实现发邮件的需求
- keras从入门到放弃(十五)图片数据增强
- centos mysql下载64位_CentOS7 64位安装mysql教程
- ACL 2019 开源论文 | 使用跨领域语言建模的跨领域命名实体识别
- 2018明星学术公众号TOP 10重磅发布,PaperWeekly再度入选