【JavaSE】复习(基础)

news2025/7/17 16:11:31

文章目录

  • 基础
    • 1.1. public class 和 class
    • 1.2. 字面量
    • 1.3. 变量的引出
    • 1.4. javadoc的使用
    • 1.5. 转义字符
    • 1.6. 逻辑运算
    • 1.7. 用户键盘输入
    • 1.8. switch
    • 1.9. for循环
    • 1.10.方法的调用
    • 1.11.break return
    • 1.12.方法重载(overload)
    • 1.13.成员变量中的实例变量
    • 1.14.方法传参
    • 1.15.构造方法
  • 封装
    • 2.1.封装
    • 2.2.实例
    • 2.3.get和set方法
    • 2.4. Java修饰符
    • 2.5.静态代码块
    • 2.6.实例语句块
    • 2.7.this
  • 继承
    • 3.1.继承
    • 3.2. Object
  • 方法覆盖和多态
    • 4.1方法覆盖
    • 4.2 多态
      • 4.2.1 向上转型和向下转型
      • 4.2.1 多态
      • 4.2.3 instanceof
      • 4.2.3 多态使用
      • 4.2.4 多态的返回值类型
    • 4.3. super

基础

1.1. public class 和 class

  • public 不是必须的。
  • class可以有多个。
  • 在源文件中,编译后一个class必然对应一个.class。
  • public修饰的class如果有,必须与源文件名一致,且只能有一个。

1.2. 字面量

单引号: 字符型数据
双引号:字符串型数据

1.3. 变量的引出

3个10占用3个不同的空间

System.out.println("10");
System.out.println("10");
System.out.println("10");

占用同一个空间

int i = 10;
System.out.println(i);
System.out.println(i);
System.out.println(i);

1.4. javadoc的使用

javadoc -d [源文件]

1.5. 转义字符

\

1.6. 逻辑运算

&

|

短路与

&&

短路或

||

1.7. 用户键盘输入

import java.util.Scanner;
public class HelloWorld{
	public static void main(String[] args){
		System.out.println("请输入第一个数据");
		Scanner s = new Scanner (System.in);
		int var_1 = s.nextInt();
		System.out.println(var_1);
	}
}

1.8. switch

值只能是int和String

switch(){
	case1:
		java语句;
		break;
	case2:
		java语句;
		break;
	default:
		java语句;
}

1.9. for循环

for(初始化表达式:条件表达式:更新表达式){
	循环体;
}

1.10.方法的调用

a方法调用b方法,当a方法与b方法同在一个类下的时候,可以省略类,直接使用方法名,不在同一个类的时候,不能省略前面的类名。

1.11.break return

break:用来终止最近的switch和循环。
return:用来终止结束方法。

1.12.方法重载(overload)

条件:

  • 在同一个类中
  • 方法名一样
  • 参数的个数,顺序,类型不同

1.13.成员变量中的实例变量

成员变量中的实例变量,必须先创建对象,通过“引用”来访问。

1.14.方法传参

1.15.构造方法

构造方法

[修饰符列表] 构造方法名(形式参数列表){
	构造方法体;
}

普通方法

[修饰符列表] 返回值类型 构造方法名(形式参数列表){
	方法体;
}

构造方法的修饰符:public。
构造方法名必须和类名保持一致。
构造方法不能有返回值类型。

当一个类中没有提供构造方法时,系统会提供一个默认的无参构造方法。
当一个类提供构造方法时,系统不会提供默认的无参构造方法。

构造方法支持方法重载。

封装

2.1.封装

private:同一个类中可见
public:对所有类可见

2.2.实例

实例向量
实例方法

都是对象点的方式引用。

2.3.get和set方法

get方法

public 返回值类型 get+属性名首字母大写(){
	方法体;
	return XXX;
}

set方法

public void set+属性名首字母大写(一个参数){
	xxx = 参数;
}

2.4. Java修饰符

访问控制符:

private default protected public

非访问控制符:

static final abstract synchronized transient volatile

2.5.静态代码块

static {
	代码块。
}

在类加载时执行,在main方法执行之前。

2.6.实例语句块

{
	代码块。
}

在构造方法执行前必然执行实例语句块。

2.7.this

this指向当前对象。

this可以使用在实例方法中,不能使用在静态方法中。

this大部分可以省略,但是在实例方法中,或者在构造方法中,为了区分局部变量和实例变量,这时不能省略this。

public void setName(String name){
	this.name = name;
}

在同一个类中,通过当前的构造方法去调用另一个构造方法。
注意:必须是第一个语句。

this(实际参数列表)

继承

3.1.继承

class A {
}

class B extends A {
}

java只支持单继承。

子类继承父类,除了构造方法外,其它都可以继承。但是私有的属性,无法在父类中直接使用,只能通过间接使用。

Object是根类,默认类都继承Object。

3.2. Object

Object部分源码:

package java.lang;
public class Object {
	protected native Object clone() throws CloneNotSupportedException;
	public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
    public boolean equals(Object obj) {
        return (this == obj);
    }
}

当源码中一个方法以" ; "结尾,并且修饰符列表中有"nativa"关键字表示底层调用c++写的dll程序(dll动态链接库)

方法覆盖和多态

4.1方法覆盖

什么时候使用方法覆盖?
当子类继承过来的方法不能满足子类时,子类有权对这个方法进行重写,有必要进行方法的覆盖。

方法覆盖注意事项:

  • 两个类必须有继承关系。构造方法不能覆盖。
  • 重写后的方法具有相同的返回值类型,相同的方法名,相同的形式参数列表。
  • 访问权限不能更低,可以更高。私有方法无法覆盖。
  • 重写之后的方法不能比之前的方法抛出更多的异常,可以更少。
  • 方法覆盖只是针对实例方法,静态方法覆盖没有意义。

4.2 多态

4.2.1 向上转型和向下转型

向上转型:子---->父(自动类型转换)
向下转型:父---->子(强制类型转换)
当要访问子类中特有的方法时,必须向下转型。

Animal a = new Cat();
Cat b = (Cat)a;

必须有继承关系

4.2.1 多态

编译阶段静态绑定,运行阶段动态绑定。

4.2.3 instanceof

c instanceof Cat

为true表示c引用指向的堆内存中的对象是一个Cat类型。为false表示不是。

4.2.3 多态使用

OCP原则:对扩展开发,对修改关闭。

4.2.4 多态的返回值类型

对于基本数据类型来说,返回值类型必须一致。
对于引用数据类型来说,重写后返回值类型可以更小。

4.3. super

在这里插入图片描述

父类和子类中有同样的属性名,或者方法,而又想在子类中访问父类的,则super不能省略。

super.属性名   访问父类的属性
super.方法名(实参)   访问父类的方法
super(实参)    访问父类的构造方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/369023.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机网络你都懂了吗

文章目录一、计算机网络的定义简单定义通用定义二、计算机网络通信过程三、什么是网络协议(Protocol)四、网络协议组成及功能一、计算机网络的定义 简单定义 计算机网络是一些相互连接的、自治的计算机系统的集合。 通用定义 将处于不同位置并具有独…

ChatGPT?听说Biying把它下架了

ChatGPT被玩疯了,开始放飞自我 ChatGPT版微软必应上线不到10天…就被网友玩坏了 先说这个词,放飞自我,什么东西才会放飞自我? 人放飞自我,人?你确定是人? 所以让我们来把上面的句子改写一下。…

怎样激发读者好奇心?短视频营销之场景化

目录 激发读者好奇心?四个小技巧帮你搞定 1.省略法 2.欲言又止法: 3.问句法:就是用疑问的形式引起别人的好奇。 4.反差法 选择合适的主题。 利用场景化效果 使用滤镜。 如何提高用户的留存率。 1、设置一个有趣的话题。 2、用好道具。 3、多用竖屏。 什…

适合python游戏开发的库你知道几个?

python游戏开发的库 01 PyGame 官网: https://www.pygame.org/docs/ 概述: Pygame 是一组专为编写视频游戏而设计的 Python 模块。 它在优秀的 SDL 库之上添加了功能。这允许您使用 python 语言创建功能齐全的游戏和多媒体程序。Pygame具有高度的可…

即将报名,如何选择软考考试科目?

软考全称为计算机技术与软件专业技术资格(水平)考试 是职业资格、专业技术资格考试,也是职称考试。 计算机软件资格考试设置了27个专业资格,涵盖5个专业领域, 3个级别层次(初级、中级、高级) …

ubuntu20.04安装conda

1)conda与miniconda 任何语言的包、依赖和环境管理---Python, R, Ruby, Lua, Scala, Java, JavaScript, C/ C, FORTRAN。Conda 是一个运行在 Windows、macOS 和 Linux 上的开源包管理系统和环境管理系统。Conda 可以快速安装、运行和更新包及其依赖项。Conda 可以轻松地在本地计…

关于高并发场景和进程线程协程的一些总结

1、IO复用和线程池哪个好?应用场景? IO复用就是一个线程处理多个客户端连接。如果自己实现的话,就是要不断轮询每个客户端连接,看看有没有事件发生(数据到达),即使可以用非阻塞的read函数&…

基于java+sql+servlet的金融借贷管理系统mysql数据源

基于javasqlservlet的金融借贷管理系统 一套基于基于JavaWeb实现的金融借贷系统 或 P2P金融管理系统 或 小额贷款系统,详细介绍了金融借贷系统的实现,包括:1.项目介绍2.环境搭建3.系统功能4.技术实现5.项目运行6.功能演示以通俗易懂的方式&a…

浏览器自动化框架沦为攻击者的工具

5月27日消息,安全公司Team Cymru的研究人员表示,越来越多的威胁参与者正在使用免费的浏览器自动化框架作为其攻击活动的一部分。 研究人员表示,该框架的技术准入门槛故意保持在较低水平,以创建一个由内容开发者和贡献者组成的活跃…

算法训练营 day55 动态规划 买卖股票问题系列3

算法训练营 day55 动态规划 买卖股票问题系列3 最佳买卖股票时机含冷冻期 309. 最佳买卖股票时机含冷冻期 - 力扣(LeetCode) 给定一个整数数组prices,其中第 prices[i] 表示第 i 天的股票价格 。 设计一个算法计算出最大利润。在满足以下…

JavaScript高级 Proxy Reflect

1. Proxy 1. 监听对象的变化 有一个对象,我们希望监听这个对象中的属性被设置或获取的过程 我们可以通过 Object.defineProperty 来实现 const obj {name: "why",age: 18,height: 1.88 }// 需求: 监听对象属性的所有操作 // 监听属性的操作 // 1.针对…

MySQL中的一些非常实用的函数、语法

前言我最近几年用MYSQL数据库挺多的,发现了一些非常有用的小玩意,今天拿出来分享到大家,希望对你会有所帮助。1.group_concat在我们平常的工作中,使用group by进行分组的场景,是非常多的。比如想统计出用户表中&#x…

Qt图片定时滚动

目录参考结构PicturePlay.promain.cpppictureplay.hpictureplay.cpppictureplay.ui效果参考 Qt图片浏览器 QT制作一个图片播放器 Qt中自适应的labelpixmap充满窗口后,无法缩小只能放大 可以显示jpg、jpeg、png、bmp。可以从电脑上拖动图到窗口并显示出来或者打开文件…

LDO 芯片烫手,问题出在哪里?

设计失误的一个电路,该电路是数字电路的电源,为图方便对12V直接通过线性电源芯片降压到5V: 图1:线性电源降压12V转5V 几块电路板打样好后,测试均发现AMS1117-5.0芯片烫手,负载电流100mA多,也满…

vim命令快捷键

1.概述vim在linux系统下代码补全、编译及错误跳转等方便编程的功能丰富,被广泛使用。简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。vim 是一个…

从零开始的机械臂yolov5抓取gazebo仿真(环境搭建篇中)

yolov5运行环境搭建 本篇主要讲如何搭建yolov5运行环境,以及一些需要注意避坑的重要知识点。anaconda与显卡驱动先装后装是没有什么影响的,关键在于,不能将显卡驱动以及cuda装在虚拟环境中。这里介绍一下博主的电脑环境为i7九代ubuntu18.04r…

移动办公时代,数智化平台如何赋能企业管理升级?

在传统的办公模式下,企业组织办公不仅时效低,周期长、成本高,且各办公系统相互独立。随着社会经济的发展,人们的工作生活变得多样化,对于办公的需求也越来越多,存在明显弊端的传统办公模式已不能满足企业对…

基于Mirai框架的Chatgpt_qq机器人搭建

参考项目:https://github.com/lss233/chatgpt-mirai-qq-bot by:雪月三十 采用docker方式搭建 方便快捷 不建议放在云服务器上 本地要有代理才行(也可以自行配置代理) 以下操作均是在有代理的情况下进行的 克隆项目 git clone ht…

狐狸优化算法(Matlab代码实现)

👨‍🎓个人主页:研学社的博客💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密…

K8S篇-搭建kubenetes集群

安装环境 这里使用pve虚拟机搭建三台centos机器,搭建过程参考: Centos篇-Centos Minimal安装 此次安装硬件配置 CPU:2C 内存:2G 存储:64G 环境说明 操作系统:Centos 7.9 内核版本:6.2.0-1.el7.elrepo…