![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 54
璃 白
这个作者很懒,什么都没留下…
展开
-
Java进阶:注解
注解概念通过反射机制获取注解概念1.Annotation 注解/注释2.注解Annotation是一种引用数据类型。编译之后也是生成xxx.class文件。3.自定义注解语法格式: [修饰符列表] @interface 注解类型名{ }4.注解的使用:第一:注解使用时的语法格式是: @注解类型名第二:注解可以出现在类上、属性上、方法上、变量上等…注解还可以出现在注解类型上。5.JDK内置注解:掌握:Deprecated 用 @Deprecated 注释的程序元素,不鼓励程序员使用这原创 2022-04-24 11:09:02 · 85 阅读 · 0 评论 -
Java进阶:Method与反射机制
Method与反射机制准备的类反射Method(了解)反编译 类的方法(了解)通过反射机制调用对象的方法(重点)准备的类/** * 用户业务类 */public class UserService { /** * 登录的方法 * @param name 用户名 * @param password 密码 * @return true表示登录成功,false表示登录失败 */ public boolean login(String na原创 2022-04-22 16:28:20 · 1835 阅读 · 0 评论 -
Java进阶:可变长度参数
可变长度参数/*可变长度参数 语法:类型... 参数名 1.可变长度参数的参数个数:0~N个 2.可变长度参数必须在最后一个位置上,而且可变长度参数只能有一个 3.可变长度参数可以看作是一个数组 */public class ArgsTest { public static void main(String[] args) { m(); m("a"); m("ab","bc"); String[] str原创 2022-04-22 16:12:02 · 384 阅读 · 0 评论 -
Java进阶:类加载器、双亲委派机制
类加载器什么是类加载器?专门负责加载类的命令/工具。ClassLoaderJDK中自带的3个类加载器:启动类加载器:rt.jar扩展类加载器:ext/*.jar应用类加载器:classpath代码在开始执行之前,会将所需要类全部加载到JVM当中。首先通过"启动类加载器"加载。 注意:启动类加载器专门加载:C:\Program Files\Java\jdk1.8.0_101\jre\lib\rt.jar rt.jar中都是JDK最核心的类库。如果通过"启动类加载器"加原创 2022-04-22 10:41:32 · 432 阅读 · 0 评论 -
Java进阶:反射机制
反射机制1.反射机制的作用:操作字节码文件(class文件)。2.反射机制的相关类在 java.lang.reflect.*; 中3.反射机制相关的重要的类:java.lang.Class:代表整个字节码,代表一个类型,即整个类。java.lang.reflect.Field:代表字节码中的属性字节码。即类中的成员变量(静态变量+实例变量)。java.lang.reflect.Method:代表字节码中的方法字节码。即类中的方法。java.lang.reflect.Constructor:代原创 2022-04-22 10:23:08 · 105 阅读 · 0 评论 -
Java进阶:多线程、synchronized锁
多线程、锁多线程下数据安全问题线程安全问题解决方案死锁守护线程定时器多线程下数据安全问题多线程并发环境下,数据的安全问题(重点)存在安全问题的三个条件:1.多线程并发2.有共享数据3.共享数据有修改的行为满足以上3个条件之后,就会存在线程安全问题。解决方法:线程同步机制,让线程排队执行。线程同步机制的语法是:synchronized (){ // 线程同步代码块}synchronized () 括号中传的数据必须是多线程共享的数据。synchronized出现在实例方法上原创 2022-04-21 15:39:13 · 1048 阅读 · 1 评论 -
Java进阶:线程
线程进程与线程概述实现线程的两种方式第一种方式:编写一个类,直接继承java.lang.Thread,重写run方法。第二种方式:编写一个类,实现java.lang.Runnable接口,实现run方法。线程对象的生命周期线程常用方法线程的sleep方法进程与线程概述进程是一个应用程序。线程是一个进程中的执行场景/执行单元。一个进程可以启动多个线程。实现线程的两种方式第一种方式:编写一个类,直接继承java.lang.Thread,重写run方法。/*实现线程的第一种方式: 编写一个原创 2022-04-18 10:12:36 · 213 阅读 · 0 评论 -
Java进阶:IO流和Properties集合的联合使用
将userinfo文件中的数据加载到Properties对象当中。新建一个属性配置文件userinfo.propertiesusername=adminpassword=123456# 属性配置文件中的key重复的话,value会自动覆盖#password=123实现IoPropertiesTest.java/*IO+Properties 联合使用 */public class IoPropertiesTest { public static void main(Strin原创 2022-04-12 14:17:47 · 85 阅读 · 0 评论 -
Java进阶:序列化与反序列化
ObjectOutputStream:内存 ------序列化(拆分对象)------>硬盘ObjectInputStream:硬盘 ------反序列化(组装对象)------>内存序列化Serialize: 将内存中的java对象存储到硬盘文件中。反序列化DeSerialize: 将硬盘上的数据重新恢复到内存中。参与序列化和反序列化的对象,必须实现Serializable接口。Serializable接口源码:public interface Serializable {}原创 2022-04-12 13:53:31 · 438 阅读 · 0 评论 -
Java进阶:拷贝相关实现
拷贝拷贝文件拷贝普通文本拷贝目录拷贝文件/** * 使用FileInputStream + FileOutputStream完成文件拷贝 * 使用以上的字节流拷贝文件的时候,不用在意文件类型。任意文件类型都能拷贝。 * * @author lwx * @since 20220408 */public class CopyTest { public static void main(String[] args) { FileInputStream fis = nul原创 2022-04-12 10:37:13 · 212 阅读 · 0 评论 -
Java进阶:IO流
IO流IO流java.io下需要掌握的16个流IO流java中所有的流都是在:java.io.*;下。java.io.InputStream 字节输入流java.io.OutputStream 字节输出流java.io.Reader 字符输入流java.io.Writer 字符输出流所有的流都实现了:java.io.Closeable接口,都是可关闭的,都有close()方法。流毕竟是一个管道,这个是内存和硬盘之间的通道,用完之后一定要关闭,不然会耗费(占用)很多资源。养成好习惯,用完原创 2022-04-12 10:27:05 · 634 阅读 · 0 评论 -
Java进阶:Map接口
Map接口Map接口常用方法Map集合的遍历(重点)Map接口常用方法Map和Collection没有继承关系Map集合以key和value的方式存储数据:键值对key和value都是引用数据类型。key和value都是存储对象的内存地址。key起到主导的地位,value是key的一个附属品。java.util.Map接口中常用的方法:V put(K key, V value) 向Map集合中添加键值对V get(Object key) 通过key获取valuevoid原创 2022-04-06 15:19:02 · 316 阅读 · 0 评论 -
Java进阶:Collection接口
Collection接口Collection接口集合遍历/迭代(重点)深入contains、remove方法List接口ArrayList集合LinkedList集合Vector集合Set接口HsahSet集合TreeSet集合Collection接口Collection中 只要是Object的子类型,都能存储(集合中不能直接存储基本数据类型,也不能存储java对象,只是存储Java对象的内存地址)关于java.util.Collection接口中常用的方法boolean add(Object e原创 2022-04-02 09:44:49 · 318 阅读 · 0 评论 -
Java进阶:增强for循环
foreach数组遍历集合遍历数组遍历public class ForEachTest { public static void main(String[] args) { // int类型数组 int[] arr = {1,2,3,4,5,6}; // 遍历数组 // 普通for循环 for (int i = 0; i < arr.length; i++) { System.out.原创 2022-03-31 16:57:24 · 577 阅读 · 0 评论 -
Java进阶:泛型
泛型/** * 泛型:JDK5.0之后推出的新特性 * 泛型这种语法机制,只在编译阶段起作用,只是给编译器参考的 * 使用泛型的好处: * 1.集合中存储的元素统一 * 2.从集合中取出的元素类型是泛型指定的类型,不需要进行大量的“向下转型” * 泛型的缺点: * 导致集合中存储的元素缺乏多样性 */public class GenericTest { public static void main(String[] args) {原创 2022-03-31 10:09:03 · 467 阅读 · 0 评论 -
Java进阶:集合
集合集合概念常见的集合常见的集合底层实现集合概念集合不能直接存储基本数据类型,集合也不能直接存储Java对象。所有的集合类和集合接口都在java.util包下常见的集合Collection接口的子接口包括:Set接口和List接口Map接口的实现类主要有:HashMap、TreeMap、Hashtable、ConcurrentHashMap以及Properties等Set接口的实现类主要有:HashSet、TreeSet、LinkedHashSet等List接口的实现类主要有:Array原创 2022-03-08 21:34:34 · 286 阅读 · 0 评论 -
Java进阶:final、finally、finalize区别
finally原创 2022-03-08 11:44:29 · 63 阅读 · 0 评论 -
Java进阶:异常
异常异常是以类和对象的形式存在的,异常发生时底层时new对象Object下有Throwable(可抛出的)Throwable下有两个分支:Error(不可处理,直接退出JVM)和Exception(可处理的)Exception下有两个分支:Exception的直接子类:编译时异常。(要求程序员在编写程序阶段必须预先对这些异常进行处理,如果不处理编译器报错,因此得名编译时异常)RuntimeException:运行时异常。(在编写程序阶段程序员可以预先处理,也可以不管)java.lang原创 2022-03-08 11:25:29 · 86 阅读 · 0 评论 -
Java进阶:枚举enum
枚举枚举enumswitch与enum枚举enum/* 1.枚举是一种引用数据类型 2.枚举语法: enum 枚举类型名{ 枚举值1,枚举值2 } 3.结果只有两种情况建议使用布尔类型, 结果大于两种情况建议使用枚举类型。例如:颜色、四季、星期 */public class EnumTest { public static void main(String[] args) { /*in原创 2022-02-20 20:01:48 · 135 阅读 · 0 评论 -
Java进阶:Date、BigDecimal、随机数
字母日期或时间元素表示示例GEra标志符Texty年Year1996; 96M年中的月份MonthJuly; Jul; 07w年中的周数Number27W月份中的周数Number2D年中的天数Number189d月份中的天数Number10F月份中的星期Number2E星期中的天数TextTuesday; TueaAm/pm 标记TextPMH一天中的小时数(0-...原创 2022-02-20 19:33:56 · 343 阅读 · 0 评论 -
Java进阶:String、int、Integer之间的相互转换
String、int、Integer代码示例//String --> intint parseInt = Integer.parseInt("123");//int --> String//方法一System.out.println(123 + "");//方法二String valueOf = String.valueOf(123);//int --> Integer//方法一Integer x = 100;//方法二Integer i = new Int原创 2022-02-19 13:40:25 · 134 阅读 · 0 评论 -
Java进阶:包装类Integer
八种包装类基本数据类型包装类型(引用数据类型)包装类的父类bytejava.lang.ByteNumbershortjava.lang.ShortNumberintjava.lang.IntegerNumberlongjava.lang.LongNumberfloatjava.lang.FloatNumberdoublejava.lang.DoubleNumberbooleanjava.lang.BooleanObje原创 2022-02-19 12:53:14 · 220 阅读 · 0 评论 -
Java进阶:String、StringBuffer和StringBuilder
String、StringBuffer和StringBuilderStringStringBufferStringBuilderString1.String 声明的是不可变的对象,每次操作都会生成新的 String 对象,再将指针指向新的 String 对象2.经常改变字符串内容的情况下最好不要使用 String。StringBuffer1.StringBuffer可以看做可变长度字符串,可以在原有基础上进行操作2.StringBuffer 是线程安全的,源码使用synchronized关键字修原创 2022-02-07 17:24:31 · 63 阅读 · 0 评论 -
Java进阶:String类中的常用方法
String类中的常用方法String类中的构造方法String类中的常用方法1. char charAt(int index)2. int compareTo(String anotherString)3. boolean equals(Object anObject)4. boolean contains(CharSequence s)5.boolean endsWith(String suffix)6. boolean startsWith(String prefix)7. boolean equa原创 2022-02-07 11:44:05 · 214 阅读 · 0 评论 -
Java进阶:冒泡排序、选择排序、二分查找
排序与查找冒泡排序选择排序二分查找(折半查找)冒泡排序两两比较,左边>右边,进行交换,经过一轮交换,最大的在最后一个位置,下一次循环排除掉已确定位置的值/* 初始值:9,3,2,7,6 第一次冒泡:3,9,2,7,6 3,2,9,7,6 3,2,7,9,6 3,2,7,6,9 第二次冒泡:2,3,7,6 2,3,7,6 2,3,原创 2022-02-02 17:43:03 · 367 阅读 · 0 评论 -
Java进阶:Array数组
数组Array一维数组二维数组代码示例例子1例子2例子3:String[] args数组例子4:数组拷贝例子4:二维数组Array一维数组Java语言中的数组是一种引用数据类型。存储在堆内存中。数组的父类是Object。数组是一个数据的集合。数组一旦创建,在Java中规定,长度不可变。所有的数组对象都有length属性,用来获取数组中元素的个数。java中的数组要求数组中元素的类型统一。所有数组都是拿第一个的地址作为整个数组对象的内存地址。优点:检索效率高。缺点:1.由于为了保证数原创 2022-01-31 22:47:15 · 723 阅读 · 0 评论 -
Java进阶:匿名内部类
匿名内部类/* 不建议使用匿名内部类,因为一个类没有名字,无法重复使用。 且代码太乱,可读性差。*/public class Test{ public static void main(String[] args){ Math m = new Math(); //m.mySum(new ComputeImpl(), 100, 200); //使用匿名内部类 m.mySum(new Compute(){ public int sum(int a, int b){原创 2022-01-31 13:50:08 · 373 阅读 · 0 评论 -
Java进阶:访问控制权限
访问控制权限访问控制权限:4个private 私有的protected 受保护的default 默认public 公开的访问控制修饰符本类同包子类任意位置public✔✔✔✔protected✔✔✔✘默认✔✔✘✘private✔✘✘✘类的成员不写访问修饰时默认为default。默认对于同一个包中的其他类相当于公开(public),对于不是同一个包中的其他类相当于私有(private)。受保护(protected)原创 2022-01-31 13:46:19 · 582 阅读 · 0 评论 -
Java进阶:final、抽象类和接口
这里写目录标题final抽象类final1.final时java语言中的一个关键字。2.final表示最终的、不可变的。3.final修饰的变量,只能赋一次值,不能重新赋值。4.final修饰的方法无法被重写。5.final修饰的类无法被继承。6.final修饰的引用只能指向1个对象,并且永远指向该对象,无法再指向其它对象。并且在该方法执行过程中,该引用指向对象之后,该对象不会被垃圾回收器回收。直到当前方法结束,才会释放空间。7.final修饰的实例变量,系统不会赋默认值,必须手动赋值。8原创 2022-01-30 11:45:40 · 1042 阅读 · 0 评论 -
Java基础:this与super
this与superthis1.this能出现在实例方法和构造方法中。2.this的语法是:this.、this()。3.this不能使用在静态方法中。4.this. 大部分情况下是可以省略的。5.this. 在区分局部变量和实例变量的时候不能省略。public void setName(String name){ this.name = name;}6.this() 只能出现在构造方法第一行,通过当前的构造方法去调用本类中其它的构造方法。目的:代码复用super1.super能出原创 2022-01-28 13:14:30 · 163 阅读 · 0 评论 -
Object 源码相关toString方法
Object 源码相关方法Object 源码toString方法重写toString方法Object 源码package java.lang;public class Object { // 注意:当源码当中一个方法以";"结尾,并且修饰符列表中有"native"关键字 // 表示底层调用C++写的dll程序(dll动态链接库文件) private static native void registerNatives(); //静态代码块 static { // 调用原创 2022-01-28 10:20:00 · 237 阅读 · 0 评论 -
Java基础回顾1
java基础回顾1回顾1回顾2类体{ 实例变量; 实例方法; 静态变量; 静态方法; 构造方法; 静态代码块; 实例语句块; 方法(){ 局部变量; }}回顾1/* 1.类加载机制:在程序执行之前,把需要加载的类全部加载到jvm中。 2.先完成加载才会执行main方法*/public class Review{ //静态代码块:在类加载时执行,只执行一次 static { System.out.println("Review静态代码块执行!"); }原创 2022-01-24 21:41:45 · 196 阅读 · 0 评论 -
Java基础:静态与实例(变量、方法、代码块)
静态代码块与实例语句块代码块1. 静态代码块2. 实例语句块3. 执行顺序代码块1. 静态代码块静态代码块语法Static {java语句;}静态代码块在类加载时执行,只执行一次,并且在main方法执行之前执行。静态代码块一般按照自上而下顺序执行静态代码块的作用:提供一个类加载时机public class Static { //静态变量:类加载时初始化 static int i = 100; //静态代码块:类加载时执行 static { System.out.pri原创 2022-01-24 16:15:47 · 234 阅读 · 0 评论 -
Java基础:循环与递归
方法递归1.不使用递归,计算1~n的和2.使用递归,计算1~n的和1.不使用递归,计算1~n的和//不使用递归,计算1~n的和public class NoRecursion{ public static void main(String[] args){ //1~5的和 System.out.println(sum(5)); } //计算1~n的方法 public static int sum(int n){ int result = 0; for(int i = 1;原创 2022-01-21 22:10:11 · 593 阅读 · 0 评论 -
Java基础题目
java基础题目题目1.计算1000以内所有不能被7整除的整数之和2.计算1+2-3+4-5+6-7.....+100的结果3.从控制台输入一个正整数,计算该数的阶乘。即5!=5x4x3x2x14.从控制台接收一个正整数,判断该数字是否为质数5.从键盘接收一个正整数为行数,输出以下图形6.存钱问题7.判断是否是完数原创 2022-01-21 13:32:56 · 327 阅读 · 0 评论