![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础
Java基础内容
Nancy_G
这个作者很懒,什么都没留下…
展开
-
反射
反射一、Class的理解二、获取Class的实例三、了解ClassLoader四、反射的应用一、Class的理解1.Class是反射的源头 (要想使用反射必先获取该类的Class对象)2.Class本身也是一个类3.Class 对象只能由系统建立对象4.一个加载的类在 JVM 中只会一个Class实例5.一个Class对象对应的是一个加载到JVM中的一个.class文件6.每个类的实例都会记得自己是由哪个 Class 实例所生成7.通过Class可以完整地得到一个类中的所有被加载的结构8.原创 2020-11-05 19:21:43 · 60 阅读 · 0 评论 -
final不可变实现原理
final不可变实现原理前言一、final变量?二、final方法?三、final类?四、final总结1.final关键字的好处2.final的重要知识点五、final实现原理前言final可以用来修饰变量、方法、类。final的变量是不可以修改的,final修饰的方法代表是不可以重写的(override),final修饰的类代表不可以被继承。一、final变量? final修饰的变量只能被赋值一次,赋值后值不再改变(final要求地址值不能改变)。如果final修饰的是基本数据类型,表示原创 2020-11-02 10:37:02 · 1307 阅读 · 1 评论 -
Java中常用注解
注解( Annotation ):注解可以对类中的结构(属性、方法、构造器等)进行补充说明,同时不改变原有的结构。1.jdk内置常用的三个注解: @Override: 限定重写父类方法, 该注解只能用于方法 @Deprecated: 用于表示所修饰的元素(类, 方法等)已过时。 @SuppressWarnings: 抑制编译器警告2.自定义注解格式 :权限修饰符(public/缺省的) @interface 注解名{ 变量的类型 变量名() default 默认值;}3原创 2020-11-02 09:43:39 · 121 阅读 · 0 评论 -
深入理解Java异常处理体系
异常处理一、异常体系结构二、抓抛模型三、异常的处理1.try-catch-finally2.throws四、手动抛出异常throw五、自定义异常类一、异常体系结构上图为Java的异常类体系。Throwable是所有异常类的基类。它有两个子类,Error和Exception。Error:该类异常是Java虚拟机无法解决的问题,发生Error时没有针对性的代码进行处理的一类异常。Exception:其他因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理的一类异常。其中,Exc.原创 2020-11-02 09:24:58 · 90 阅读 · 0 评论 -
Java三大特性之多态性
多态性在Java中体现为对象的多态性:父类的引用指向子类的对象Java引用变量的两种类型:编译时类型和运行时类型编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。简称:编译看左边;运行看右边。若编译时类型和运行时类型不一致,就出现了对象的多态性(Polymorphism)。多态情况下,“看左边”:看的是父类的引用(父类中不具备子类特有的方法)原创 2020-11-01 11:12:47 · 299 阅读 · 0 评论 -
类的成员之方法
● 什么是方法(method、函数): 方法是类或对象行为特征的抽象,用来完成某个功能操作。在某些语言中也称为函数或过程。 将功能封装为方法的目的是:实现代码重用,简化代码 Java里的方法不能独立存在,所的方法必须定义在类里。● 方法的格式: 权限修饰符 返回值类型 方法名(形参列表){ 方法体; }● 方法的说明: 1. 权限修饰符 :private 缺省的 protected public (先使用public即可) 2. 返回值原创 2020-11-01 11:12:15 · 379 阅读 · 0 评论 -
关键字this和super
this和super的区别 区别点 this super 访问属性 访问本类中的属性,如果本类没有此属性则从父类中继续查找 直接查找父类中的属性 调用方法 访问本类中的方法,如果本类没有此方法则从父类中继续查找 直接查找父类中的方法 调用构造器 访问本类中的构造器,必须放在构造器的首行 访问父类中的构造器,必须放在子类构造器的首行 关键字this1原创 2020-11-01 11:11:38 · 124 阅读 · 0 评论 -
Object类
Object类 1.Object类是所有类的父类 2.如果一个类没有显示继承其它类,那么默认继承Object类 3.Obejct只有一个空参的构造器 4.Object中有11个方法,其中三个wait方法是重载方法Object中的equals()方法public boolean equals(Object obj) { return (this == obj);}(1) 像String, Date等核心类库基本上都重写了equals方法,用来比较内容。(2) 自定义类如果没有重写e原创 2020-11-01 11:10:51 · 93 阅读 · 0 评论 -
子类对象的实例化过程
从过程上看 :当我们创建子类对象的时候子类会调用直接父类的构造器,间接父类的构造器…Object类的构造器。从而将这些类信息加载到JVM中。那么子类就可以调用父类中的属性和方法了。 从结果上看 : 子类继承父类以后就拥了父类中的属性和方法。注意 :自始之终只认为创建了子类一个对象。...原创 2020-11-01 11:10:16 · 107 阅读 · 0 评论 -
类的成员之代码块(初始化块)
代码块的作用:用来对类或对象进行初始化代码块的分类:静态代码块 VS 非静态代码块格式:非静态代码块: { //代码}静态代码块 :static{ //代码}注意:代码块只能被static修饰说明:静态代码块:1.静态代码块是随着类的加载而加载的。(类加载只加载一次)2.类加载优先于对象的创建。(静态代码块的执行优先于非静态代码块)3.静态代码块可以多个,多个静态代码块之间是从上向下依次执行4.静态代码块不能调用实例变量和非静态方法5.静态代码块可用于对Java类原创 2020-11-01 11:09:52 · 83 阅读 · 0 评论 -
final,finally和finalize
finalfinal 可用于修饰类、变量和方法。final 修饰类:final 修饰的类不能被继承![在这里插入图片描述](https://img-blog.csdnimg.cn/20201029194414505.png#pic_center)当把final去掉之后,便不再报错了。![在这里插入图片描述](https://img-blog.csdnimg.cn/20201029194516401.png#pic_center) final 修饰方法:final 修饰的方法不能被重写![在这里原创 2020-11-01 11:09:34 · 88 阅读 · 0 评论 -
方法的重载与重写
方法的重载● 概念: 同一个类中相同的方法名不同的形参列表构成重载两同一不同: 同一个类,同一个方法名,不同的形参列表 不同的形参列表 :形参的个数,类型,顺序不同。● 如何确定类中某一个方法的调用:方法名 + 形参列表注意 : 方法的重载和权限修饰符,返回值类型,形参的名字无关。举例:public void add(int a,int b){}public void add(double a,do原创 2020-10-30 20:21:45 · 190 阅读 · 0 评论 -
接口和抽象类的区别
No. 区别点 抽象类 接口 1 定义 包含抽象方法的类 主要是抽象方法和全局常量的集合 2 组成 构造方法、抽象方法、普通方法、常量、变量 常量、抽象方法、(jdk8.0:默认方法、静态方法) 3 使用 子类继承抽象类(extends) 子类实现接口(implements) 4 关系 ...原创 2020-10-30 20:20:45 · 73 阅读 · 0 评论 -
多态性之对象类型间的转换
对Java对象的强制类型转换称为造型从子类到父类的类型转换可以自动进行从父类到子类的类型转换必须通过造型(强制类型转换)实现无继承关系的引用类型间的转换是非法的在造型前可以使用instanceof操作符测试一个对象的类型代码案例:class Person{ public Person(){ System.out.println("Person Constructor"); }}class Student extends Person{ public Student(){原创 2020-10-30 20:20:07 · 238 阅读 · 0 评论 -
abstract关键字——抽象类与抽象方法
abstract可以修饰:类、方法1.abstract修饰方法(抽象方法) :抽象方法只有方法的声明,没有方法体抽象方法所在的类必须为抽象类2.abstract修饰类(抽象类):1.抽象类不能被实例化。2.抽象类也有构造器。因为在子类对象的实例化过程中,子类一定会调用父类的构造器3.非抽象子类继承抽象类后必须重写抽象父类中的所有抽象方法4.如果非抽象子类不想重写抽象父类中的方法,那么该子类也需要变成抽象子类。5.抽象子类可以重写抽象父类中的抽象方法,如果直接抽象父类重写了间接抽象父类中的抽原创 2020-10-30 20:19:10 · 742 阅读 · 0 评论 -
模板方法设计模式
多态的应用:模板方法设计模式(TemplateMethod)抽象类体现的就是一种模板模式的设计,抽象类作为多个子类的通用模板,子类在抽象类的基础上进行扩展、改造,但子类总体上会保留抽象类的行为方式。解决的问题:当功能内部一部分实现是确定的,一部分实现是不确定的,这时可以把不确定的部分暴露出去,让子类去实现。换句话说,在软件开发中实现一个算法时,整体步骤很固定、通用,这些步骤已经在父类中写好了。但是某些部分易变,易变部分可以抽象出来,供不同子类实现,这就是一种模板模式。模板方法设计模式是编程中经常用原创 2020-10-30 20:18:21 · 163 阅读 · 0 评论 -
Java中的接口(interface)
接口的声明格式 : 权限修饰符(public/default) interface 接口名{ }说明: 1.接口和类是并列存在的关系。 2.接口不能被实例化 3.接口中只能常量和抽象方法(JDK1.8之前) 4.接口和接口之间是继承关系而且是多继承。 接口1 extends 接口2,接口3....... 5.类和接口的关系是实现关系而且是多实现。 类 implments 接口1 ,接口2....... 6.类实现接口后必须重写接口中所有的抽象方法,如果不想重写那么该类可以变成抽象类原创 2020-10-30 20:15:31 · 102 阅读 · 0 评论 -
类的成员之内部类
将一个类定义在另一个给类里面或者方法里面,这样的类就被称为内部类。相对而言, 包含它的类称为外部类.内部类: 作为类: 1.可以继承父类,实现接口 2.类内部可以有类的成员(普通类可以做的事情内部类都可以) 作为类的成员: 1.可以被static修饰 2.可以使用四种权限修饰符、 3.内部类还可以调用外部类的成员(属性、方法) 学习目标: 1.如何创建内部类的对象?原创 2020-10-30 19:51:02 · 271 阅读 · 0 评论 -
Java中继承成员变量和成员方法的区别
若子类重写了父类方法,就意味着子类里定义的方法彻底覆盖了父类里的同名方法,系统将不可能把父类里的方法转移到子类中。对于实例变量则不存在这样的现象,即使子类里定义了与父类完全相同的实例变量,这个实例变量依然不可能覆盖父类中定义的实例变量。class Base { int count = 10; public void display() { System.out.println(this.count); }}class Sub extends Base {原创 2020-10-30 09:51:01 · 234 阅读 · 1 评论 -
类的成员之构造器
● 构造器的特征:它具有与类相同的名称它不声明返回值类型。(与声明为void不同)不能被static、final、synchronized、abstract、native修饰,不能return语句返回值● 构造器的作用:1. 创建对象 2. 对对象进行初始化通过一个类创建一个对象,这个过程叫做实例化,实例化是通过调用构造方法(又叫做构造器)实现的。● 格式:权限修饰符 类名(形参列表){ 执行语句;}● 说明: 1.如果在类中没有显示的提供构造器,那么系统会默认提供一原创 2020-10-30 09:40:52 · 102 阅读 · 0 评论 -
static关键字
●static可以用来修饰的结构:属性,方法,代码块,内部类变量的分类(按位置分) : 成员变量(属性) vs 局部变量属性的分类 :对象属性(实例变量/实例属性) vs 类属性(类变量)● static修饰属性(类属性)1. 同一个类创建的多个对象,每个对象单独拥有一份实例变量,共同拥有一份类变量。2. 同一个类多个对象中某个对象对类变量进行修改后,其它的对象看到的是修改后的值。3. 类变量是随着类的加载而加载的(类加载加载一次)。实例变量是随着对象的创建而加载的。4. 调用类变量的两种方原创 2020-10-28 11:01:55 · 68 阅读 · 0 评论 -
枚举类
枚举类:一个类的对象的个数是有限的,数目是可数的。自定义枚举类class Season{ private final String seasonName; private final String seasonDes; //1.私化构造器 private Season(String seasonName,String seasonDes){ this.seasonDes = seasonDes; this.seasonName = seasonName; } //2.创建对象原创 2020-10-28 10:45:44 · 320 阅读 · 0 评论 -
单例设计模式
设计模式设计模式是在大量的实践中总结和理论化之后的代码结构、编程风格、以及解决问题的思考方式常见的设计模式常见的有23种设计模式。单例设计模式,代理设计模式,工厂设计模式,观察者设计模式,装饰设计模式…单例设计模式构造方法私有化静态属性指向实例public static的 getInstance方法,返回第二步的静态属性单例设计模式的作用某个类的对象在当前工程中只能有一个单例设计模式实现的方式:懒汉式 vs 饿汉式懒汉式和饿汉式的概念饿汉式是立即加载的方式,无.原创 2020-10-28 10:24:06 · 108 阅读 · 1 评论 -
类的成员之属性
属性的分类 :对象属性(实例变量/实例属性) vs 类属性(类变量)对象属性的初始化方法声明属性的时候完成初始化构造方法中完成初始化采用代码块的方式完成初始化public class Person { public String name = "some person"; public Person(){ name = "one person"; System.out.println(name); } { name = "the person"; Syste原创 2020-10-28 10:04:32 · 198 阅读 · 0 评论 -
JDK,JRE,JVM之间的区别与联系
JDK(Java Development Kit),即Java开发工具包,是一个编写Java应用程序的开发环境;JRE(Java Runtime Environment),即Java运行环境,支持Java程序运行的标准环境;JVM(Java Virtual Machine),即Java虚拟机。- JDKJDK是Java环境的核心组件,并提供编译、调试和运行一个Java程序需要的所有工具,可执行文件和二进制文件。JDK包含了JRE和一些Java开发工具。也就是说JDK=JRE+Java开发工具(编译器、调原创 2020-10-28 07:53:18 · 372 阅读 · 0 评论 -
Java中四种访问权限修饰符及其应用场景
Java权限修饰符public、protected、 default、 private置于类的成员定义前,用来限定对象对该类成员的访问权限。 修饰符 类内部 同一个包 不同包的子类 同一个工程 private Yes default Yes Yes protected Yes Yes Yes原创 2020-10-27 21:28:20 · 710 阅读 · 2 评论 -
成员变量和局部变量的区别
成员变量 局部变量 声明的位置 直接声明在类中 方法形参、方法内部、代码块内、构造器内等 修饰符 private、public、static、final等 不能用权限修饰符修饰,可以用final修饰 初始化值 有默认初始化值 没有默认初始化值,必须显式赋值方可使用 内存加载位置 堆空间或静态域内 栈空间 ...原创 2020-10-27 21:11:19 · 148 阅读 · 0 评论 -
变量间的运算
基本数据类型变量间的运算(不包括boolean)自动类型提升:小容量和大容量的变量进行运算结果用大容量的变量来接收。 byte,short,char -> int -> long -> float -> double注意:①byte,short,char三者之间做运算会先将自身提升为int②容量指的是表数范围强制类型转换:自动类型提升的逆过程格式 :(强转的类型)变量注意:强制类型转换可能会损失精度。基本数据类型与String间的运算字符串的声明.原创 2020-10-27 20:16:52 · 167 阅读 · 0 评论