![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
Rhenic
Java学习者
展开
-
Lambda表达式的代码演示
6、Lambda表达式6.1无参数无返回值@Test public void test1(){ Runnable run1 = new Runnable() { @Override public void run() { System.out.println("传统方式的Runnable"); } }; Thread t1 = new Threa原创 2022-05-12 15:22:56 · 281 阅读 · 0 评论 -
JDK动态代理的实现与测试
4、JDK动态代理1、需要动态代理的接口: /** * 需要动态代理的接口 */public interface Subject{ /** * 你好 * * @param name * @return */ public String SayHello(String name); /** * 再见 * * @return */ public String SayGood原创 2022-05-11 08:46:19 · 235 阅读 · 0 评论 -
2个例子看懂Java多态性
3、多态性例1:public class demo04 { public static void main(String[] args) { People p=new Stu(); p.eat(); //调用特有的方法 Stu s=(Stu)p; s.study(); //((Stu) p).study(); }}class People{ public void eat(){原创 2022-05-11 08:43:53 · 239 阅读 · 0 评论 -
一个代码例子看懂Java反射机制
2、反射1、获取Class对象的三种方式package fanshe;/** * 获取Class对象的三种方式 * 1 Object ——> getClass(); * 2 任何数据类型(包括基本数据类型)都有一个“静态”的class属性 * 3 通过Class类的静态方法:forName(String className)(常用) * */public class Fanshe { public static void main(String[] args) { //第一原创 2022-05-10 10:18:02 · 86 阅读 · 0 评论 -
1、Java序列化(实例、代码实现)
1、Java序列化首先创建一个对象,并实现Serializable接口:import java.io.Serializable;public class User implements Serializable{ //注意这里Serializable是关键 private static final long serialVersionUID = 1L; private String name; private int age; public String原创 2022-05-10 10:14:26 · 685 阅读 · 0 评论 -
34、对象拷贝(对象克隆)
34、对象拷贝34.1 为什么要使用克隆?想对一个对象进行处理,又想保留原有的数据进行接下来的操作,就需要克隆了,Java语言中克隆针对的是类的实例。34.2 如何实现对象克隆?有两种方式:1). 实现Cloneable接口并重写Object类中的clone()方法;2). 实现Serializable接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆注意:基于序列化和反序列化实现的克隆不仅仅是深度克隆,更重要的是通过泛型限定,可以检查出要克隆的对象是否支持序列化,这项检查是编译原创 2022-05-08 08:36:10 · 376 阅读 · 0 评论 -
30、注解
30、注解30.1、简述注解Java 注解用于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。其可以用于提供信息给编译器,在编译阶段时给软件提供信息进行相关的处理,在运行时处理写相应代码,做对应操作。30.2、简述元注解元注解可以理解为注解的注解,即在注解中使用,实现想要的功能。其具体分为:@Retention: 表示注解存在阶段是保留在源码,还是在字节码(类加载)或者运行期(JVM 中运行)。@Target:表示注解作用的范原创 2022-05-08 08:35:49 · 67 阅读 · 0 评论 -
28、Java异常
28、Java异常28.1、简述 Java 异常的分类Java 异常分为 Error(程序无法处理的错误),和 Exception(程序本身可以处理的异常)。这两个类均继承 Throwable类。Error 常见的有 StackOverFlowError、OutOfMemoryError 等等。Exception 可分为运行时异常和非运行时异常。对于运行时异常,可以利用 try catch 的方式进行处理,也可以不处理。对于非运行时异常,必须处理,不处理的话程序无法通过编译。28.2、简述 th原创 2022-05-08 08:35:28 · 66 阅读 · 0 评论 -
27、为什么要把 String 设计为不可变?
27、为什么要把 String 设计为不可变?节省空间:字符串常量存储在 JVM 的字符串池中可以被用户共享。提高效率:String 可以被不同线程共享,是线程安全的。在涉及多线程操作中不需要同步操作。安全:String 常被用于用户名、密码、文件名等使用,由于其不可变,可避免黑客行为对其恶意修改。...原创 2022-05-08 08:35:08 · 84 阅读 · 0 评论 -
26、Java 语言中关键字 static 的作用是什么?
26、Java 语言中关键字 static 的作用是什么?static 的主要作用有两个:为某种特定数据类型或对象分配与创建对象个数无关的单一的存储空间。使得某个方法或属性与类而不是对象关联在一起,即在不创建对象的情况下可通过类直接调用方法或使用类的属性。具体而言 static 又可分为 4 种使用方式:修饰成员变量。用 static 关键字修饰的静态变量在内存中只有一个副本。只要静态变量所在的类被加载,这个静态变量就会被分配空间,可以使用“类.静态变量”和“对象.静态变量”的方法使用。修原创 2022-05-08 08:34:40 · 404 阅读 · 0 评论 -
25、抽象类
25、抽象类25.1、接口和抽象类的相同点和不同点?相同点:都不能被实例化。接口的实现类或抽象类的子类需实现接口或抽象类中相应的方法才能被实例化。不同点:接口只能有方法定义,不能有方法的实现,而抽象类可以有方法的定义与实现。实现接口的关键字为 implements,继承抽象类的关键字为 extends。一个类可以实现多个接口,只能继承一个抽象类。当子类和父类之间存在逻辑上的层次结构,推荐使用抽象类,有利于功能的累积。当功能不需要,希望支持差别较大的两个或更多对象间的特定交互行为,推荐使原创 2022-05-08 08:34:05 · 199 阅读 · 0 评论 -
22、为什么 Java 语言不支持多重继承?
22、为什么 Java 语言不支持多重继承?为了程序的结构能够更加清晰从而便于维护。假设 Java 语言支持多重继承,类 C 继承自类 A 和类 B,如果类 A 和 B 都有自定义的成员方法 f(),那么当代码中调用类 C 的 f() 会产生二义性。Java 语言通过实现多个接口间接支持多重继承,接口由于只包含方法定义,不能有方法的实现,类 C 继承接口 A 与接口 B 时即使它们都有方法f(),也不能直接调用方法,需实现具体的f()方法才能调用,不会产生二义性。多重继承会使类型转换、构造方法的调用顺原创 2022-05-08 08:33:40 · 486 阅读 · 0 评论 -
21、Java 代码块执行顺序
21、Java 代码块执行顺序父类静态代码块(只执行一次)子类静态代码块(只执行一次)父类构造代码块父类构造函数子类构造代码块子类构造函数普通代码块原创 2022-05-06 09:59:46 · 260 阅读 · 0 评论 -
20、JDK 与 JRE 有什么区别?
20、JDK 与 JRE 有什么区别?JDK:Java 开发工具包(Java Development Kit),提供了 Java 的开发环境和运行环境。JRE:Java 运行环境(Java Runtime Environment),提供了 Java 运行所需的环境。JDK 包含了 JRE。如果只运行 Java 程序,安装 JRE 即可。要编写 Java 程序需安装 JDK....原创 2022-05-06 09:58:05 · 275 阅读 · 0 评论 -
19、Java 语言具有哪些特点(与C++的区别)?以及Java常用的包
19、Java 语言具有哪些特点?Java 为纯面向对象的语言。它能够直接反应现实生活中的对象。具有平台无关性(跨平台性)。Java 利用 Java 虚拟机运行字节码,无论是在 Windows、Linux 还是 MacOS 等其它平台对 Java 程序进行编译,编译后的程序可在其它平台运行。Java 为解释型语言,编译器把 Java 代码编译成平台无关的中间代码,然后在 JVM 上解释运行,具有很好的可移植性。Java 提供了很多内置类库。如对多线程支持,对网络通信支持,最重要的一点原创 2022-05-06 09:55:10 · 546 阅读 · 0 评论 -
18、String字符串的常见问题和常用方法
18、String字符串的常用方法 == 比较地址.equals() 比较内容.equalsIgnoreCase() 忽略大小写比较是否相同.charAt(); 字符串截取出指定的下标开始.compareTo() 比较大小.compareToIgnore() 忽略大小比较.concat() 将参数字符串连接到指定字符原创 2022-05-06 09:53:12 · 220 阅读 · 0 评论 -
17、装箱拆箱
17、装箱拆箱1、装箱:把基本数据类型转成包装类类型2、拆箱:把包装类类型转成基本数据类型3、为什么要包装类八种基本数据类型不满足面向对象的思想,不包括属性和方法。如果给基本数据类型添加功能,只能创建其包装类,将方法和属性封装进去...原创 2022-05-06 09:51:30 · 52 阅读 · 0 评论 -
16、设计模式(单例、工厂、建造者、装饰者等)
16、设计模式(####)16.1、OOP七大原则16.1 你了解哪些工厂模式?(最好结合例子来学习)1、单例模式分类:懒汉式、饿汉式1、构造方法私有化2、在本类中创建本类对象3、保证对象的唯一性final4、给外界提供得到对象的方法 static5、在多线程中,饿汉式安全,懒汉式不安全2、简单工厂模式批量创建对象1 创建工厂类 : 创建对象的方法2 果汁类 是所有种类果汁的父类3 在工厂类的方法中返回果汁类4 根据测试类中传递的字符串判断到底返回哪种果汁5 测试类通过原创 2022-05-06 09:41:34 · 127 阅读 · 0 评论 -
15、作用域public、private、protected 以及不写时的区别
15、作用域public、private、protected 以及不写时的区别?private修饰的成员变量和函数只能在类本身和内部类中被访问protected 修饰的成员变量和函数能被类本身、子类及同一个包中的类访问public修饰的成员变量和函数可以被类、子类、同一个包中的类以及任意其他类访问默认情况(不写)下,属于一种包访问,即能被类本身以及同一个包中的类访问(friendly)作用域当前类统一package子孙类其他packagepublic√√√√原创 2022-05-06 09:35:53 · 804 阅读 · 0 评论 -
14、“==“和[equals]
14、"=="和equals方法究竟有什么区别?==:对比的是栈中的值,基本数据类型时变量值,引用类型时队中内存对象的地址equals:用于比较两个独立对象的内容是否相同,字符串的比较也用equals,通常会重写,重写后比较的是值...原创 2022-05-06 09:29:53 · 158 阅读 · 0 评论 -
13、面向对象的三大特征、五大原则
13、面向对象13.1、面向对象的三大特征1.封装作用:提高代码的安全性1、将属性(成员变量)私有化,并提供对外界的接口(get/set方法)。2、用private修饰的属性和方法,只能在本类中使用。2.继承作用:提高代码的复用性,减少重复代码1、子类可以继承父类非私有的属性和方法,不能继承构造方法和私有的属性和方法。2、可以综合子类的共同特征来去提炼父亲的类。3、子类在继承父类的各种属性和方法时,也可以有自己的属性和方法。4、一个子类只能有一个父类,java只能单继承,不能多继承,因原创 2022-05-06 09:18:14 · 572 阅读 · 0 评论 -
12、&和&&的区别
12、&和&&的区别?&:逻辑与(and),运算符两边的表达式均为true时,整个结果才为true&&:短路与,如果第一个表达式为false时,第二个表达式就不会计算了原创 2022-05-06 09:14:36 · 159 阅读 · 0 评论 -
9、Java IO(BIO、NIO、AIO)、常用方法
9、Java IO9.1 java 中 IO 流分为几种?按功能来分输入流(input)、输出流(output)按类型来分字节流(8Byte)和字符流(16Byte)字节流和字符流的区别是:字节流按 8 位传输以字节为单位输入输出数据,字符流按 16 位传输以字符为单位输入输出数据。9.2 BIO、NIO、AIO 有什么区别?BIOBlock IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。(一个请求独占一个线程原创 2022-05-05 11:35:26 · 585 阅读 · 0 评论 -
8、JDK动态代理
8、JDK动态代理代理模式是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个真实对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。通过代理层这一中间层,有效的控制对于真实委托类对象的直接访问,同时可以实现自定义的控制策略(Spring的AOP机制),设计上获得更大的灵活性。使用步骤1,通过实现 InvocationHandler 接口创建自己的调用处理器;// InvocationHandlerImpl 实现了 Invocation原创 2022-05-05 10:56:19 · 77 阅读 · 0 评论 -
7、java反射
7、java反射7.1 什么是反射?JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。通俗地将,我们在创建每一个类的时候,都会生成一个.class的蓝图,反射就是说,拿(Class<?> a = people.class)到了这个蓝图 拿到蓝图后,我们能干嘛呢? 1、知道人都那些属性(成员变量) 2、知道人原创 2022-05-05 10:54:41 · 79 阅读 · 0 评论 -
6、java关键字
6、关键字6.1、final最终的-修饰基本类型变量,一经出初始化后就不能够对其进行修改。-修饰引用类型变量,不能够指向另一个引用。- 修饰类:表示类不可被继承- 修饰方法:表示方法不可被子类覆盖,但是可以重载- 修饰变量:表示变量一旦被赋值就不可以更改它的值6.2、Static6.3、this和super...原创 2022-05-05 10:52:27 · 323 阅读 · 0 评论 -
5、重载与重写
5、重载与重写重载: 发生在同一个类中,方法名相同,参数的类型、个数、顺序不同,方法的返回值和修饰符可以不同。重写: 发生在父子类中,方法名和参数列表相同,返回值范围小于等于父类,抛出的异常范围小于等于父类,访问修饰符范围大于等于父类;如果父类方法访问修饰符为 private 或者 final 则子类就不能重写该方法。5.1、构造器(constructor)是否可被重写(override)构造器可以被重载,不能被重写5.2、重载的方法能否根据返回类型进行区分?为什么?不能,因为调用时不能指定类型原创 2022-05-05 10:48:15 · 102 阅读 · 0 评论 -
4、String、StringBuffer、StringBuilder
4、String、StringBuffer、StringBuilderString 对象在常量池中,使用了 final 修饰,是不可变对象,可以理解为常量,线程安全;对 String 进行改变时每次都会新生成一个 String 对象,然后把指针指向新的引用对象。这样不仅效率低下,而且大量浪费有限的内存空间,所以经常改变内容的字符串最好不要用 String 。而StringBuilder,StringBuffer内部维护的是字符数组,每次的操作都是改变字符数组的状态StringBuffer 和 Strin原创 2022-05-05 10:45:03 · 174 阅读 · 0 评论 -
3、序列化(什么是 java 序列化?什么情况下需要序列化?)
3、序列化(什么是 java 序列化?什么情况下需要序列化?)3.1 什么是Java序列化?简单来说 序列化就是把Java对象储存在某一地方(硬盘、网络),也就是将对象的内容进行流化。反序列化:就是把二进制数据反序列化成对象数据3.2 为什么要序列化(持久化,复制,传输)a)当你想把的内存中的对象状态保存到一个文件中或者数据库中时候;b)当你想用套接字在网络上传送对象的时候;c)当你想通过RMI传输对象的时候;...原创 2022-05-05 10:41:07 · 1778 阅读 · 0 评论 -
Java基本数据类型
2、基本数据类型基本数据类型(8)引用数据类型(3)整型:byte(8)、short(16)、int(32)、long(64)类(字符串类型是一个类,也属于引用数据类型)浮点型:float(32)、double(64)接口布尔型:boolean(8)数组字符型:char(16)...原创 2022-05-05 10:38:39 · 50 阅读 · 0 评论 -
Object 类相关方法
Object 类相关方法方法作用getClass获取当前运行时对象的 Class 对象,即获得某个对象的类型hashCode返回对象的 hash 码clone拷贝当前对象, 必须实现 Cloneable 接口。浅拷贝对基本类型进行值拷贝,对引用类型拷贝引用;深拷贝对基本类型进行值拷贝,对引用类型对象不但拷贝对象的引用还拷贝对象的相关属性和方法。两者不同在于深拷贝创建了一个新的对象equals通过内存地址比较两个对象是否相等,String 类重写了这个方法使用值原创 2022-05-05 10:36:26 · 55 阅读 · 0 评论