当前位置:网站首页 > Java基础 > 正文

java基础36问



数组

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
局部变量是没有默认值的,但是数组是有默认值的,因为数组本身其实是对象。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如下可以看出各类型的数组的默认值:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

冒泡排序

外层for循环控制比较多少趟数,
内存for循环控制每趟的排序。
在这里插入图片描述

二维数组

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
空指针异常:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

方法

主方法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
访问修饰符可以不写,除了public static,还有protected和private.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

数组作为方法参数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

方法重载

在这里插入图片描述
在这里插入图片描述
如下,方法
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
基本数据类型作为方法参数传值的时候,是不会影响主方法中的值的。而如上,数组对象作为方法参数进行传值,是会影响主方法中的值的。

可变参数列表

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
因为如下两种定义是等价的关系,所以报错了。
在这里插入图片描述

在这里插入图片描述

可变参数列表作为方法参数的重载问题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上是如何生成文档注释的内容。

在这里插入图片描述

方法的调试

在这里插入图片描述

在这里插入图片描述
F6是一步一步往下执行。

总结

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

数组移位与统计

1.从键盘接收数据

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

我们必须要有东西去接收字符串,不然会如上报错。
所以我们改动如下;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2.数组元素的显示

在这里插入图片描述
数组元素的显示:在这里插入图片描述

在这里插入图片描述

在指定位置处插入数据

在这里插入图片描述
在这里插入图片描述

能被3整除的方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

提示信息方法的实现

在这里插入图片描述

第三章:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

 

在这里插入图片描述

JAVA基础进阶-面向对象之封装与继承

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

创建类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一般来说,如果一个变量没有被赋值,没有被初始化,它是不能被输出的。
而类里面的属性,是会给默认值的,所以即便没有被初始化,也是可以被输出的,输出的结果就是默认值。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

单一职责原则

在这里插入图片描述

在这里插入图片描述
CatTest是如何找到Cat的?
主方法运行时,先在它所在的类中找,如果找不到,就向上找同一个包里的。如下,就是找同一个 com.imooc.animal包中的。
在这里插入图片描述
一个类中,承担的功能越多,那么它的交融和耦合性越高,复用性越差。

在这里插入图片描述

new关键字

在这里插入图片描述
声明对象是在栈里,而实例化对象是在堆里。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

JAVA面向对象–构造方法介绍

无参构造方法

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

构造方法-带参构造方法

在这里插入图片描述
this关键字:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

总结面向对象

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果希望在一个类的多个重载的构造函数中相互进行调用,那么就只能通过this的方式进行调用。
如下,可以在单参的构造方法中,通过this(),调用其同一个类当中的无参的构造方法。
在这里插入图片描述
在这里插入图片描述

JAVA封装

封装的实现

在这里插入图片描述
在这里插入图片描述

封装的代码的实现

在这里插入图片描述

标题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

封装的代码实现

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

使用包进行类管理-创建包

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

使用包进行类管理-导入包

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如果多个类有名称相同,如上的cat,那么我们同时引入这些类,调用Cat类,那么到底我们调用的是哪个类呢?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

static关键字

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们将price改成static的:
在这里插入图片描述
结果发现价格都是150
在这里插入图片描述
因为无论实例化多少类,静态数据,它们都是共用同一块存储空间的。

在这里插入图片描述
静态成员,一直到这个类不再有任何对象使用,才会被销毁,静态成员才会被释放。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

static关键字

在这里插入图片描述

在这里插入图片描述
我们可以有静态的属性,静态的方法,但是静态的类不存在。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
静态成员,包括类中的静态方法和静态属性。
在这里插入图片描述

static关键字(下)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码块中的变量应用

每个花括号,形成一个存储空间,所以如下run方法,内部有两个存储空间。
在这里插入图片描述
我们知道在一个作用域范围内,是不允许出现两个重名变量的。而花括号,创建了独立的存储空间,独立的作用域,就可以在各个代码块内定义重名变量了。
在这里插入图片描述
当代码块的大括号结束后,它里面的变量就被回收了。所以我们在两个代码块中间使用的变量,是无法被访问的。
在这里插入图片描述
run方法中定义的整型变量,它的作用范围就是从定义的位置开始,到整个方法结束。
而在这整个范围内,我们是不允许存在同名变量的,所以代码块里定义的同名变量都报错了。
在这里插入图片描述

总结

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

综合案例-学生信息管理

在这里插入图片描述

在这里插入图片描述

Java基础进阶

继承(上)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

继承的实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

继承-方法的重写

父类有eat方法,但是子类也想有自己的eat方法,且和父类的eat方法不一样。
我们可以用方法的重写。在这里插入图片描述
我们回顾下方法的重载:

在这里插入图片描述
那么关于方法的重写,规则如下:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

鼠标悬浮,可以看出来,被调用的是父类还是子类中的方法。
在这里插入图片描述

  • 方法重写
    • 1、有继承关系的子类中
    • 2、方法名相同,参数列表相同(参数顺序、个数、类型),方法返回值相同
    • 3、访问修饰符,访问范围需要大于等于父类的访问范围
    • 4、与方法的参数名无关
    • 5、当方法返回值是void或基本数据类型时,必须相同;当返回值是引用类型时,可以是父类或其子类

继承-访问修饰符

在这里插入图片描述
/*
* private:只允许在本类中进行访问
* public:允许在任意位置访问
* protected:允许在当前类、同包子类/非子类、跨包子类调用;跨包非子类不允许
* 默认:允许在当前类、同包子类/非子类调用;跨包子类/非子类不允许调用
*/
如下cat是animal的跨包子类:
在这里插入图片描述
如下test是animal的跨包非子类:
在这里插入图片描述

在这里插入图片描述
如下,species品种,就是默认的类型
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

继承-访问修饰符对方法重写的影响

如下,子类中重写的方法是protected,那么范围比父类小,就会有问题。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

super关键字的使用

如果父类Animal和子类有同样的方法,那么在子类dog中调用的这个方法,实际上调用的是子类的方法。
在这里插入图片描述
如果我们希望子类中调用的是父类中的eat方法的话,我们可以使用super来调用父类中的eat方法。但是父类的构造方法不允许被继承,不允许被重写。
java基础36问在这里插入图片描述
如果是父类允许子类派生的属性,那么我们也可以用super来调用。
在这里插入图片描述

继承的初始化顺序

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如下,构造对象就包括属性,构造方法和构造代码块。
在这里插入图片描述
在这里插入图片描述

super关键字(下)

作为子类对象在构造的时候,它是否有权力去选择调用什么形式的父类构造对象呢?也就是说,我去实例化子类对象的时候,能否自行的决定调用父类的哪个构造方法呢?
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

super&this

this()会优先执行同一个类当中的无参构造。在这里插入图片描述
this()和super()都必须放在第一行。
在这里插入图片描述

在这里插入图片描述

java继承(上)总结

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Java继承(下)

Object类

在这里插入图片描述
jdk1.8对应的是Java SE 8
在这里插入图片描述
在这里插入图片描述
Java里object类是存放在java.lang这个包里的在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如下,因为String是有重写了父类中object的equals方法,所以它实际上比较的是字符串的内容。
在这里插入图片描述

Object类介绍(中)

将参数obj强转为animal类型。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Object类介绍(下)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如上,我们重写toString方法,调用One的toString方法,实际上是调用的子类的重写的toString方法。

final关键字

final关键字的使用(上)

当一个类不希望有子类继承,不希望方法被重写,不希望变量值被修改的时候,我们就可以使用final关键字。
在这里插入图片描述

父类里的方法添加了final,子类就不能重写父类里的这个方法了。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

final关键字的使用(下)

在这里插入图片描述

在这里插入图片描述

如下,final修饰的变量,是不允许重新赋值的,所以如下 animal处报错。
在这里插入图片描述
不允许进行引用地址的修订。但是这个对象里的属性值,是可以根据我们的需要随时进行修改的。
在这里插入图片描述
static和final同时修饰的变量,是一个静态的不允许被修订的成员。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注解

重写方法的快捷键:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
@Override是注解
在这里插入图片描述
在这里插入图片描述
注解的种类:
@Override就是源码注解:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
元注解:是注解的注解,也就是对注解进行标注。
比如@target就是元注解,用于限定这个注解可以用于什么地方。
在这里插入图片描述

标题

在这里插入图片描述

注解(下)

在这里插入图片描述
如上,父类中有个静态方法,Animal create()
如下,子类中也有个同名的静态方法,Dog create()
在这里插入图片描述
编译器会认为,子类将父类中同名的静态方法进行了隐藏,而不是重写。
如果创建的是Dog对象,那么调用的是Dog中的create方法。如果创建的是Animal对象,那么调用的是Animal中的create方法。

总结

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

设计模式

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

单例模式概述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

饿汉式代码实现

不管你是否使用,实例先给你创建出来。
在这里插入图片描述
在这里插入图片描述
如下,发现获取的实例引用是完全相同的。
在这里插入图片描述

懒汉式代码实现

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

饿汉式pk懒汉式

在这里插入图片描述
懒汉式:在该类创建后,如果一直不去取它的对象实例,也不会造成内存空间的浪费。所以它是一种用时间换空间的操作方式。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

单例模式以及其应用场景

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

JAVA多态

多种形态
按F1快捷键,在不同的环境下,弹出不同的帮助文档。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

多态的实现

案例场景描述以及实体类编写

在这里插入图片描述

多态-向上转型

如下,虽然都是吃的行为,也同样都是Animal类型的引用,但是因为具体程序运行时,实例化的对象类型不同,那么它的执行的具体行为能力是不一样的。这就是JAVA中的多态。
把子类对象转型成父类对象,这就叫向上转型。
如下Animal父类的引用,指向一个具体的子类Cat类型的实例,这种我们称之为向上转型。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

多态-向下转型

在这里插入图片描述

instanceOf

判断左边的对象是否是右边类型的实例
在这里插入图片描述
在这里插入图片描述

类型转换

 
 

类型总结

在这里插入图片描述

抽象类

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

总结

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

多态(下)

在这里插入图片描述
在这里插入图片描述
如下,手机和相机,都可以拍照,那么我们可以定义一个具有照相能力的接口。让手机和相机分别去实现这个接口。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
由此,我们通过接口,来描述不同的类型有相似的行为特征。

接口成员: 默认方法&静态方法

如下,INet接口中,有两个抽象方法:network和connection
在这里插入图片描述
Smartwatch去实现INet,其实用不上connection方法,但是不得不去Override定义connection方法。要不然就让Smartwatch成为抽象类,那么在实现INet的时候,就不用去定义connection方法了。
在这里插入图片描述
在JDK1.8之后,我们可以在接口中定义默认方法,这样实现这个接口的类中,就不用去定义有默认方法的方法了。
在这里插入图片描述
如下,我们在接口中定义默认方法和静态方法:

版权声明


相关文章:

  • 基础语法java常量2025-04-05 09:26:05
  • java语言基础数组2025-04-05 09:26:05
  • java基础语法修饰符2025-04-05 09:26:05
  • 零基础跨专业学java2025-04-05 09:26:05
  • java基础变架构2025-04-05 09:26:05
  • java入门基础体系2025-04-05 09:26:05
  • 王者荣耀java基础2025-04-05 09:26:05
  • java基础的书籍2025-04-05 09:26:05
  • 哈尔滨java基础知识2025-04-05 09:26:05
  • java基础资料视频2025-04-05 09:26:05