2022-9-5 JavaSE note
Java SE
1、IDEA基本操作
psvm + 回车 : main() 方法声明
sout + 回车 : = System.out.println();
Ctrl + D : 把当前行复制到下一行
new Scanner + 回车 : 调用Scanner方法
new Scanner(System.in); alt + 回车 + 回车 → Scanner scanner = new Scanner(System.in);
Scanner + 回车 : 调用Scanner方法
2、java零散笔记
java 是值传递
Scanner用完记得结束
Scanner scanner = new Scanner(System.in);
//内容
scanner.close();//结束使用Scanner
int[] numbers = {10,20,30,40,50}; //定义一个数组
//遍历数组的元素
for (int x : numbers){
System.out.println(x);
}
- 关键字
//public 公共的
//protected 受保护的
//default 默认的,可以不写
//private 私有的
- 构造器
/*
构造器:
1. 和类名相同
2. 没有返回值
作用:
1. new 本质在调用构造方法
2. 初始化对象的值
注意点:
1.定义有参构造只后,如果想使用无参构造,必须显示的定义一个无参的构造
Alt + Insert
this. =
*/
面向对象
5. 对象的创建和使用
- 必须使用new 关键字创造对象, 构造器 Person kuangshen = new Person();
- 对象的属性 kuangshen.name
- 对象的方法 kuangshen.sleep()
面向对象的三大特性
封装
private int id;
public int getId() {
return id;
} public void setId(int id) {
this.id = id;
}
//用到了private,要想调用,就要写 get/set 方法
继承
//extends关键字
public class Teacher extends Person {
} //Teacher类继承Person类
//在Java中,所有的类,都默认直接或者间接继承Object类
重写
//重写都是方法的重写,与属性无关 //静态方法 : //方法的调用只和左边,定义的数据类型有关
A a = new A();
a.test();//A
//父类的引用指向了子类
B b = new A(); //子类重写了父类的方法
b.test();//B /*
重写:需要有继承关系,子类重写父类的方法!
1.方法名必须相同
2.参数列表必须相同
3.修饰符:范围可以扩大但不能缩小:public > protected > default > private
重写,子类的方法和父类必须要一致,方法体不同!
alt + insert : override?
*/
super
/*
1.调用子类的构造方法时,会默认调用父类的无参构造方法, 要想调用父类的有参构造,
我们需要显示的:super(参数列表),来调用父类有参数 的构造函数,在子类的构造方法中第一行加入super();
*/ //super调用父类的构造方法,必须在构造方法的第一个
//super必须只能出现在子类的方法中或者构造方法中
//super 和 this 不能同时调用构造方法! /*
Vs this :
代表的对象不同:
this:本身调用者这个对象
super:代表父类对象的引用
前提
this:没有继承也可以使用
super:只能在继承条件才可以使用
构造方法
this(); 本类的构造
super();父类的构造
*/
object类
//在Java中,所有的类,都默认直接或者间接继承Object类
多态
/*
1.多态是方法的多态,属性没有多态
2.父类和子类,有联系
3.存在的条件:继承关系,方法需要重写,父类引用指向子类对象 Father f1 = new Son(); 不能被重写的方法:
1.static 方法,属于类,它不属于实例
2.final 常量
3.private 方法 私有的
*/ //instanceof 判断两个类有没有父子关系 /*
//类型之间的转换: //高 低
Person obj = new Student(); //student 将这个对象转换为Student类型,我们就可以使用Student类型的方法了!
((Student) obj).go(); //子类转化为父类,可能丢失自己的本来的一些方法!
Student student = new Student();
Person person = student; //低转高,直接转 1.父类引用指向子类的对象
2.把子类转换为父类,向上转换;
3.把父类转换为子类,向下转换;强制转换
4.方便方法的调用,减少重复的代码!简介
*/
static
1.非静态方法可以调用静态方法中的所有东西,静态方法可以调用静态方法,不能调用非静态方法中的东西
类可以直接调用静态的变量:Student.age
2.执行顺序:静态代码块(只执行一次) > 匿名代码快 > 构造方法
3.被final修饰的类,不能被继承,没有子类 (final之后断子绝孙)
抽象类
//抽象类的所有方法,继承了它的子类,都必须要实现它的方法~ 除非子类也是抽象类,就不用了, //abstract , 抽象方法,只有方法名字,没有方法的实现!
public abstract void doSomething(); //1. 不能new这个抽象类,只能靠子类去实现它;约束!
//2. 抽象类中可以写普通的方法~
//3. 抽象方法必须在抽象类中~
//抽象的抽象:约束
接口
//interface 定义的关键字 , 接口都需要有实现类 //接口中的所有定义的方法其实都是抽象的 public abstract // 抽象类:extends
// 类 可以实现接口 implements 接口
// 实现了接口的类,就需要重写接口中的方法 //多继承~利用接口实现多继承
内部类
成员内部类
调用成员内部类
//在外面的类的最后,写一个方法,调用成员内部类(创建对象,在访问)
class Outer08{
class Inner08{ //成员内部类
public void say(){ }
} public void t1(){
Inner08 inner08 = new Inner08();
inner08.say();
}
}
可以直接访问外部类的所有成员,包含私有的。
外部其他类调用内部类的二种方法
//
Outero8.Inner08 inner08 = outero8.new Inner08();
inner08.say();
//2. 在外部类中,编写一个方法,可以返回 Inner08 对象
//方法,返回一个Inner08实例
public Inner08 getInner08Instance(){
return new Inner08();
}
//调用
Outer08.Inner08 inner08Instance = outer08.getInner08Instance();
inner08Instance.say();
如果成员内部类的成员和外部类的成员重名,会遵守就近原则,可以通过 外部类.this.属性 来访问。
静态内部类
局部内部类
可以直接访问外部类的所有成员,包含私有的
不能添加访问修饰符,但是可以使用 final 修饰
作用域:仅仅在定义它的方法或代码块中
外部类在方法中,可以创建 Inner02 对象,然后调用方法即可
class Outer02{//外部类
public void m1(){//方法
final class Inner02{//局部内部类(本质仍然是一个类)
public void f1(){ }
}
Inner02 inner02 = new Inner02();
inner02.fi();
}
} //main 方法中调用
Outer02 outer02 = new Outer02();
outer02.m1(); //调用了fi() 方法
(在类的方法中的类,调用的时候可以在此方法最后 new 局部内部类)
如果外部类和局部内部类的成员重名,默认遵循就近原则,可以通过 外部类.this.成员 来访问。
匿名内部类
- 没有名字初始化类,不用将实例保存到变量中
//一个Java类中可以有多个class类,但是只能有一个public class
异常
//假设要捕获多个异常:从小到大
2022-9-5 JavaSE note的更多相关文章
- javaSE中JDK提供的四种线程池
对javaSE中JDK提供的四种线程池稍作整理 一.Executor package java.util.concurrent; /** * @since 1.5 * @author Doug ...
- HDU 2022 海选女主角
http://acm.hdu.edu.cn/showproblem.php?pid=2022 Problem Description potato老师虽然很喜欢教书,但是迫于生活压力,不得不想办法在业 ...
- [Log4j使用教程] JavaSE/JavaEE/SpringMVC中使用Log4j
要想使用Log4j, 首先需要下载到Log4j的jar, Download: http://www.apache.org/dyn/closer.cgi/logging/log4j/1.2.17/log ...
- 三星Note 7停产,原来是吃了流程的亏
三星Note 7发售两个月即成为全球噩梦,从首炸到传言停产仅仅47天.所谓"屋漏偏逢连天雨",相比华为.小米等品牌对其全球市场的挤压.侵蚀,Galaxy Note 7爆炸事件这场连 ...
- 《Note --- Unreal --- MemPro (CONTINUE... ...)》
Mem pro 是一个主要集成内存泄露检测的工具,其具有自身的源码和GUI,在GUI中利用"Launch" button进行加载自己待检测的application,目前支持的平台为 ...
- 《Note --- Unreal 4 --- Sample analyze --- StrategyGame(continue...)》
---------------------------------------------------------------------------------------------------- ...
- 用大白话聊聊JavaSE -- 如何理解Java Bean(一)
首先,在开始本章之前,先说一个总的概念:所谓的Java Bean,就是一个java类,编译后成为了一个后缀名是 .class的文件.这就是Java Bean,很多初学者,包括当年的我自己,总是被这些专 ...
- [LeetCode] Ransom Note 赎金条
Given an arbitrary ransom note string and another string containing letters from all th ...
- javaSE基础07
javaSE基础07 一.static静态修饰符 用了static修饰的变量就会变成共享的属性,只会初始化一次,在内存中只存在一个,并且每个对象都可以访问,存放在方法区(数据共享区) 1.1 stat ...
随机推荐
- Java 图片生成PDF
public static void main(String[] args) { String imageFolderPath = "E:\\Tencet\\图片\\test\\" ...
- NC23053 月月查华华的手机
NC23053 月月查华华的手机 题目 题目描述 月月和华华一起去吃饭了.期间华华有事出去了一会儿,没有带手机.月月出于人类最单纯的好奇心,打开了华华的手机.哇,她看到了一片的QQ推荐好友,似乎华华还 ...
- .NET ORM框架HiSql实战-第二章-使用Hisql实现菜单管理(增删改查)
一.引言 上一篇.NET ORM框架HiSql实战-第一章-集成HiSql 已经完成了Hisql的引入,本节就把 项目中的菜单管理改成hisql的方式实现. 菜单管理界面如图: 二.修改增删改查相关代 ...
- 记录自己NVIDIA GeForce MX250迷之安装cuda+pytorch成功了
电脑是ubuntu20.4 Pop!_OS 20.04 LTS MX250显卡并没有列在CUDA支持的GPU里 希望文中链接的别人的博客不会消失掉. 安装了英伟达的驱动 参考了这一篇:Ubuntu 安 ...
- 一个月后,我们又从 MySQL 双主切换成了主 - 从!
这是悟空的第 157 篇原创文章 官网:www.passjava.cn 你好,我是悟空. 一.遇到的坑 一个月前,我们在测试环境部署了一套 MySQL 高可用架构,也就是 MySQL 双主 + Kee ...
- C++实现ETW进行进程变动监控
C++实现ETW进行进程变动监控 文章地址:https://www.cnblogs.com/Icys/p/EtwProcess.html 何为Etw ETW(Event Tracing for Win ...
- 【做题笔记】CF Edu Round 132
1. 前言 本人第一次把 Div2. D 切了,开心. C 不会,寄. 后来在场外想到一种奇怪做法 AC 了. 2. 正文(A-D) CF 比赛链接 A. Three Doors 签到题.循环查找手中 ...
- [mybatis]mybatis日志的使用和分页功能的实现
日志 Mybatis 通过使用内置的日志工厂提供日志功能.内置日志工厂将会把日志工作委托给下面的实现之一: SLF4J Apache Commons Logging Log4j 2 Log4j JDK ...
- 算法竞赛进阶指南0x36组合计数
概述 AcWing211. 计算系数 #include <bits/stdc++.h> using namespace std; const int mod = 10007 ; int k ...
- python 异常捕捉与异常处理
简介 在实际开发中,为了防止异常界面直接被用户看到,往往我们会采用捕捉异常的方式来进一步处理异常. 异常捕捉 如下代码由于下标越界会导致异常 data = range(10) print(data[1 ...