随笔分类 -  Java核心

摘要:(目录) 1. 为什么要有泛型 1.1 不使用泛型的问题 当不使用泛型时,集合中是可以存放任意类型对象的,只要把对象存储集合后,那么他们都会被提升为Object类型。当我们在取出每一个对象,并且进行相应的操作,需要进行类型转换。 观察下面代码: public static void main(Str 阅读全文
posted @ 2020-09-01 16:44 sun10367 阅读(1169) 评论(0) 推荐(0)
摘要:(目录) 异常处理方式一:在当前方法中直接用try…catch处理 异常处理方式二:在当前方法中不处理,throws 异常抛给调用者处理 1 方式1:try…catch...finally捕获异常 1.1 try…catch代码块 try-catch的方式就是捕获异常。 **try:**该代码块中编 阅读全文
posted @ 2020-08-30 14:45 sun10367 阅读(2850) 评论(0) 推荐(0)
摘要:(目录) 在Java中经常会涉及到多个对象的排序问题,那么就涉及到对象之间的比较。 Java实现对象排序的方式有两种: **自然排序:**java.lang.Comparable **定制排序:**ava.util.Comparator 1. 自然排序:java.lang.Comparable Co 阅读全文
posted @ 2020-08-28 20:24 sun10367 阅读(2250) 评论(0) 推荐(0)
摘要:(目录) 类加载器 我们编写的.java文件被编译器编译成.class的字节码文件,类加载器ClassLoader负责将这些字节码文件加载到内存中去执行。 JVM提供了三种类加载器: 引导类加载器Bootstrap:最顶层类加载器,负责加载JDK核心类库,C++语言实现 扩展类加载器ExtClass 阅读全文
posted @ 2020-08-27 23:22 sun10367 阅读(293) 评论(0) 推荐(0)
摘要:(目录) 1. 类的加载时机 以下5个情况,只要有1个出现,那么类的加载器就会将这个类的class文件加载到内存中: 创建类的实例。 使用类的静态变量或静态方法。 使用反射方式来强制创建某个类或接口对应的java.lang.Class对象。 初始化某个类的子类。 直接使用java.exe命令来运行某 阅读全文
posted @ 2020-08-26 20:38 sun10367 阅读(534) 评论(0) 推荐(0)
摘要:(目录) 1. 枚举概述 枚举:列举,一个一个地列出来。 Java枚举:把某个类型的对象,全部列出来。 什么情况下会用到枚举类型? 某些类的对象只有确定的有限个时,可以把这样的类声明为枚举。 例如: 星期:Monday(星期一)......Sunday(星期天) 性别:Male(男)、Female( 阅读全文
posted @ 2020-08-25 23:48 sun10367 阅读(5633) 评论(0) 推荐(1)
摘要:(目录) 1. 概述 生活中,比如跑的动作,小猫、小狗和大象,跑起来是不一样的。再比如飞的动作,昆虫、鸟类和飞机,飞起来也是不一样的。可见,同一行为,通过不同的事物,可以体现出来的不同的形态。多态,描述的就是这样的状态。 定义 多态: 是指对同一方法的调用,由于编译时类型和运行时类型不一致可能会有不 阅读全文
posted @ 2020-08-25 18:29 sun10367 阅读(1688) 评论(0) 推荐(0)
摘要:(目录) 1. 概述 接口,是Java语言中一种引用数据类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么接口的内部主要就是封装了方法,包含抽象方法(JDK 7及以前),默认方法和静态方法(JDK 8),私有方法(JDK 9)。 在Java中,接口表示一种规范/约束,要求实现 阅读全文
posted @ 2020-08-25 09:44 sun10367 阅读(612) 评论(0) 推荐(0)
摘要:(目录) 1. 概述 类用于描述现实生活中一类事物。类中有属性、方法等成员。 父类中的方法,被它的子类们重写,子类各自的实现都不尽相同。那么父类的方法声明和方法主体,只有声明还有 意义,而方法主体则没有存在的意义了。 某种情况下,父类只能知道子类应该具备一个怎样的方法,但是不能够明确知道如何实现该方 阅读全文
posted @ 2020-08-24 10:01 sun10367 阅读(3221) 评论(0) 推荐(0)
摘要:(目录) 成员内部类 定义 成员内部类 :定义在外部类中方法外的类 定义格式: [修饰符] class 外部类名 [extends 外部类的父类] [implements 外部类的父接口们] { [修饰符] class 内部类名 [extends 非静态内部类自己的父类] [implements 非 阅读全文
posted @ 2020-08-23 22:33 sun10367 阅读(896) 评论(0) 推荐(0)
摘要:== 运算符 == 既可以用于基本数据类型的比较,也可以用于引用数据类型的比较 (1)如果比较的是基本数据类型变量:比较两个变量的值是否相等,相等即为true 注意:当基本数据类型进行比较时,符号两边的数据必须类型兼容(类型相同或可自动类型转换),否则编译出错。 测试代码: public class 阅读全文
posted @ 2020-08-23 10:02 sun10367 阅读(296) 评论(0) 推荐(0)
摘要:1. 静态代码块 静态代码块:定义在类中方法外,使用static修饰 ①可以为类变量(静态变量)初始化 ②静态代码块在第一次使用这个类之前执行,即在类初始化时执行,且只执行一次 ③若有多个静态代码块,那么按照定义的先后顺序依次执行 ④在静态代码块中不能访问非静态成员(属性、方法、内部类) ⑤在静态代 阅读全文
posted @ 2020-08-22 14:22 sun10367 阅读(1339) 评论(0) 推荐(0)
摘要:1 非静态代码块 非静态代码块特点 ①可以为实例变量(非静态的属性)初始化 ②每次创建对象的时候,都会执行一次,且先于构造器执行 ③若有多个非静态的代码块,那么按照定义的顺序从上到下依次执行 ④代码块中既可以调用非静态的变量和方法,也可以可以调用静态的变量和方法 测试代码: public class 阅读全文
posted @ 2020-08-22 10:34 sun10367 阅读(391) 评论(0) 推荐(1)
摘要:方法重载:在同一个类中,允许存在多个同名方法,只要它们的参数列表不同,与修饰符和返回值类型无关,这样的多个同名方法之间构成重载。 参数列表:参数个数,参数类型,参数顺序 方法调用:根据实际传入的参数决定调用哪个方法。 代码示例: public class OverloadTest { public 阅读全文
posted @ 2020-08-21 23:23 sun10367 阅读(979) 评论(0) 推荐(0)
摘要:定义位置不同: 成员变量:类中方法外 分为类变量(static修饰)、实例变量(没有使用static修饰) 局部变量:方法内、代码块内 默认值不同: 成员变量:有默认初始化值 局部变量:没有默认初始化值,必须显式赋值,方可使用 作用范围不同: 成员变量: 静态变量(类变量),在本类中随便用,在其他类 阅读全文
posted @ 2020-08-21 22:21 sun10367 阅读(602) 评论(0) 推荐(0)
摘要:继承后的特点——成员变量 对象访问成员变量时,会先在子类中查找有没有定义对应的变量,若子类中存在就会就近使用子类中的变量,若子类中没有定义就会沿着继承关系往上找有没有定义相应的变量,若父类中也没有则编译不通过。代码示例: class Fu { // Fu类中的成员变量。 int num = 5; i 阅读全文
posted @ 2020-08-16 22:27 sun10367 阅读(1082) 评论(0) 推荐(1)
摘要:Java的变量分为两大类:基本数据类型和引用数据类型。 其中基本类型变量有四类8种:byte short int long float double char boolean,除了8种基本数据类型变量,其他变量都是引用数据类型,如类、接口、数组等。 基本数据类型,只有一块存储空间, 在栈中,存放的是 阅读全文
posted @ 2020-08-12 14:30 sun10367 阅读(1763) 评论(0) 推荐(1)