
Java
常用 Java 技术文章收集
卡尔特斯
GitHub: https://github.com/dengzemiao
掘金:https://juejin.im/user/4450440831840909
展开
-
Java 的 JDK 多版本管理与常用命令(JEnv、SDKMAN、Jabba)
比较常用的Java JDK版本管理工具有JEnvSDKMAN,而Jabba是一个比较新的工具,它是跨平台的Java版本管理工具,它是受Node.js的nvm启发,所以Jabba跟nvm的使用方式几乎一致。原创 2024-01-09 11:32:29 · 13557 阅读 · 3 评论 -
Mac 卸载非 JDK 管理工具安装的 Java JDK
如果想删除JRE,请执行以下步骤,首先关闭所有正在使用JRE的应用程序。本身,还可以手动删除其他相关的文件,从而清理整个系统。以下是一些有用的命令和脚本,可帮助手动删除这些文件。,请执行以下步骤,首先关闭所有正在使用。执行该命令后,JRE就会被彻底删除。,后面的路径不需要。原创 2024-01-05 18:02:01 · 1242 阅读 · 0 评论 -
Java 可变参数(详细使用)
可变参数 又称 参数个数可变,用作方法的形参出现,那么方法参数个数就是 可变 的了。书写格式:格式:修饰符 返回值类型 方法名(数据类型... 量名){ }范例:public static int sum(int... a) { }可变参数 注意事项:这里的 可变参数变量 其实是一个数组。如果一个方法 有多个参数,包含可变参数,可变参数要放在最后。使用案例public class test { public static void main(Str..原创 2021-09-23 11:00:09 · 7531 阅读 · 0 评论 -
Java 泛型使用(类、方法、接口协议、类型通配符、通配符上下限)
一、简介泛型:是 JDK5 中引入的特性,它提供了编译时类型安全检测机制,该机制允许在编译时检测到非法的类型,它的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,然后在使用/调用时传入具体的类型。这种参数类型可以用在类、方法和接口中,分别被称为泛型类泛型方法、泛型接口。泛型 定义格式:<类型>:指定一种类型的格式,这原创 2021-09-23 10:42:59 · 248 阅读 · 0 评论 -
Java List 集合子类特点与区别
ArrayList:底层数据结构是数组,查询快,增删慢,线程安全,效率高。Vector:底层数据结构是数组,查询快,增删慢,线程安全,效率高。LinkedList:底层数据结构是链表,查询慢,增删快,线程安全,效率高。一般情况下,不使用 Vector。查询多,使用 ArrayList。增删多,使用 LinkList。都多用 ArrayList。...原创 2021-08-26 10:22:04 · 168 阅读 · 0 评论 -
Java 增强 for 循环(类似 for in 循环)
实现 Iterable 接口的类允许其对象成为增强型 for 语句的目标。它是 JDK5 之后出现的,其内部原理是一个 Iterator 迭代器。格式for (数据类型 变量 : 数组或集合) { // 使用 变量 即可}案例import java.util.ArrayList;import java.util.List;public class test { public static void main(String[] args) { // 创建集..原创 2021-08-24 11:05:10 · 253 阅读 · 0 评论 -
Java ListIterator 迭代器的使用(Iterator 与 ListIterator 的区别)
一、简介通过 List 集合的 listIterator() 方法得到,它是 List 集合特有的迭代器。允许程序员沿任一方向遍历列表的列表迭代器,在迭代期间修改列表,并获取列表中迭代器的当前位置。Iterator 与 ListIterator 的区别:Iterator:只能从上到下便利元素。ListIterator:可以沿任一方向遍历列表,修改列表、获取当前索引。二、案例代码import java.util.ArrayList;import java.util.List;原创 2021-08-04 15:27:58 · 758 阅读 · 0 评论 -
Java List 的简单使用
一、简介有序集合(也称为序列),可以精确控制列表中没个元素的插入位置。可以通过整数索引访问元素,并搜索列表中的元素。与 Set 集合不同,列表通常允许 重复 的元素。二、使用案例import java.util.ArrayList;import java.util.List;import java.util.Iterator;public class test { public static void main(String[] args) { // 创建 Li原创 2021-08-04 11:56:40 · 341 阅读 · 0 评论 -
Java Collection 的简单使用
一、简介提到集合就不得不提一下数组,好多集合底层都是依赖于数组的实现。数组一旦初始化后,长度就确定了,存储数据对象不能达到动态扩展,其次数组存储元素不便于对数组进行添加、修改、删除操作,而且数组可以存储重复元素。这个时候集合对作用显现出来了。集合分为 Collection和 Map 两种体系。Collection 接口 (java.util.Collection) 是 Java集合类的顶级接口之一,整个集合框架就围绕一组标准接口而设计。Collection的集合类的继承树:原创 2021-08-04 11:25:48 · 243 阅读 · 0 评论 -
Java 自定义异常(Exception)
自定义格式public class 异常类名 extends Exception { 无参构造 带参构造}自定义案例public class ScoreException extends Exception { // 无参构造 public ScoreException() {} // 带参构造 public ScoreException(String message) { // 异常错误消息 super(message); }}使用..原创 2021-07-22 16:47:56 · 3115 阅读 · 0 评论 -
Java 异常处理(try-catch、throws)
一、try...catch...格式try { 可能出现异常的代码} catch (异常类名 变量名) { 异常处理代码}执行流程1、程序从 try 里面的代码开始执行,出现异常,会自动生成一个异常类对象,该异常对象将被提交给 Java 运行时系统。2、当 Java运行时系统 接收到异常对象时,会到 catch 中去找匹配的异常类,找到后进行异常的处理,执行完毕之后,程序还可以继续往下执行。案例代码public class test { public static原创 2021-07-22 16:15:35 · 389 阅读 · 0 评论 -
Java 获取指定年份内的月份有多少天
// 指定月份int year = 2066;int month = 2;// 获取日历对象Calendar c = Calendar.getInstance();// 设置日历对象为指定年月日,为指定月份的第一天c.set(year, month, 1);// 设置日历对象,指定月份往前推一天,也就是最后一天c.add(Calendar.DATE, -1);// 获取这一天输出即可int day = c.get(Calendar.DATE);System.out.println原创 2021-07-22 15:39:11 · 1065 阅读 · 0 评论 -
Java Calendar 的常用方法(get、set、add)
import java.util.Calendar;public class test { public static void main(String[] args) { // ======================== get 的使用 ============= // 获取日历对象 Calendar c = Calendar.getInstance(); // public int get(int field): 返回指定日历字段的值 int.原创 2021-07-22 15:27:55 · 1115 阅读 · 0 评论 -
Java Date 类的常用使用
一、构造方法java.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象。第一个构造函数使用当前日期和时间来初始化对象。Date date = new Date()// 例如// public Date() 分配一个 Date 对象,并初始化,以便它代表它被分配的时间,精确到毫秒Date date1 = new Date();System.out.println(date1); // Wed Jul 21 16:43:39原创 2021-07-22 10:44:43 · 287 阅读 · 0 评论 -
Java Date - SimpleDateFormat 的使用
SimpleDateFormat 是一个具体的类,用于格式化和解析日期的格式(注意大小写,代表的含义是不同的)yyyy:年MM:月dd:日hh:1~12小时制(1-12)HH:24小时制(0-23)mm:分ss:秒S:毫秒E:星期几D:一年中的第几天F:一月中的第几个星期(会把这个月总共过的天数除以7)w:一年中的第几个星期W:一月中的第几星期(会根据实际情况来算)a:上下午标识k:和HH差不多,表示一天24小时制(1-24)。K:和hh差不多,表示一天12小时制...原创 2021-07-21 17:15:43 · 212 阅读 · 0 评论 -
Java int 与 String 的互相转换
public class test { public static void main(String[] args) { // int -> String int num = 100; // 方式一: String s1 = "" + num; System.out.println(s1); // 方式二: String s2 = String.valueOf(num); System.out.println(s2); //原创 2021-07-16 16:26:04 · 134 阅读 · 0 评论 -
Java Arrays 列举常用方法
一、简介Arrays 类位于 java.util 包中,主要包含了操纵数组的各种方法。使用时导包: import java.util.Arrays。Arrays 常用函数都是 静态的。二、使用import java.util.Arrays;public class test { public static void main(String[] args) { // 输出数组内容: // String Arrays.toString(Object[] arr原创 2021-07-14 16:25:36 · 222 阅读 · 0 评论 -
Java 类对象(Object)内容(属性值)转字符串(toString)
将类对象通过重写 toString 转换成自己想要的字符串格式。Person.java 类对象public class Person { // 对象属性 String name; int age; // 无参构造函数 public Person () { } // 有参构造函数 public Person (String name, int age) { this.name = name; this.age = age; } // 重写..原创 2021-07-05 10:51:40 · 2193 阅读 · 0 评论 -
Java 类对象(Object)内容(属性值)比较(equals)
通常比较一个对象或者内容直接通过 ==、equals 进行比较,默认比较的都是指针地址,但有时候需要比较的是两个对象的内容或者属性值是否一致。遇到这种需求的时候,要么就是便利比较一下两个对象,或者在对象里面写个比较方法进行判断,其实也是可以重写 Object 自带的 equals 方法来实现的。Person.java 类对象public class Person { // 对象属性 String name; int age; // 无参构造函数 public..原创 2021-07-05 10:20:23 · 1643 阅读 · 1 评论 -
Java 内部类(成员、局部、匿名)
内部类格式public class Outer { public class Inner { }}内部类访问特点内部类可以直接访问外部类的成员,包括私有,外部类要访问内部类的成员,必须创建对象public class Outer { // 内部属性 private int num = 10; // 内部类 public class Inner { // 内部类方法 public void show() { System.out.pr..原创 2021-06-16 15:21:11 · 104 阅读 · 0 评论 -
Java 接口协议(interface)
接口协议 是一个抽象类,是不能被实例化的,也就是无法通过 new 来创建对象的。接口协议 用关键字 interface 修饰public interface 接口协议名 { 代码块 }public interface inter { public void jump(); public void run();}类实现 接口协议 用 implements 表示,如果不实现协议方法则会报错public class 类名 implements 接口协议名 { 代码块 }pu..原创 2021-06-16 11:56:20 · 904 阅读 · 0 评论 -
Java 权限修饰符(private、protected、public、默认、final、static)
private:表示成员是私有的,只能在当前类中进行访问。默认:无修饰词(默认),同一个包内可以访问,访问权限是包级访问权限。protected:表示受保护权限,体现在继承,即子类可以访问父类受保护成员,同时相同包内的其他类也可以访问 protected 成员。public:表示成员是公开的,所有其他类都可以访问。final:关键字是 最终 的意思,可以修饰 成员方法、成员变量、类修饰方法:表明该方法是最终方法,不能被重写。修饰变量:表明该变是常量,不能再次被赋值。...原创 2021-06-16 11:02:57 · 2222 阅读 · 0 评论 -
Java 包(package)编译执行过程(简单分析)
包的含义:其实就是对文件夹分类管理包的定义格式:package 包名;// 多级包用 `.` 分开,相当于文件夹 /com/dzmpackage com.dzm;示例代码,新建一个 test.java 文件,在头部指定 package com.dzm;,也就是相当于将编译得到的 test.class 文件存到当前目录下的 /com/dzm 文件夹中,全路径是:/com/dzm/test.classpackage com.dzm;public class test { pub..原创 2021-06-15 18:11:43 · 2122 阅读 · 1 评论 -
Java 继承(extends)使用
Person.java:父类public class Person { // 名字 String name; // 年龄 int age; // 跑起来 public void run() { System.out.println("跑起来!"); }}Dzm.java:子类public class Dzm extends Person { // 实现父类的 run 方法 @Override public void run() { ..原创 2021-06-15 15:38:34 · 210 阅读 · 0 评论 -
Java 集合(ArrayList)使用(增删改查)
import java.util.ArrayList;public class test { public static void main(String[] args) { // 创建一个空集合对象 ArrayList<String> array = new ArrayList<>(); // 输出 System.out.println(array); // [] // ----------------- 添加 //..原创 2021-06-15 15:22:52 · 735 阅读 · 0 评论 -
Java 数组(Array)与集合(List、ArrayList ...)的区别
ArrayArray 长度固定,如果删除或者新增都需要重新排列所有数据,开销很大。Array(数组)是基于索引(index)的数据结构,它使用索引在数组中搜索和读取数据是很快的。List可以给自动扩容,而数组初始化的时候就应该给指定大小。而且 List 的方法很多,对里面的元素操作起来也方便。其实 List 是一个接口,或者说是一套协议,所以 List 是不能被构造的:List list; // 正确 list = null; List list=new List(); // 错..原创 2021-06-15 15:04:08 · 2113 阅读 · 3 评论 -
Java StringBuilder 和 String 相互转换
public class test { public static void main(String[] args) { // 创建对象 StringBuffer sb = new StringBuffer(); sb.append("dzm"); // 将 StringBuffer 转换为 String String str = sb.toString(); // String 转换为 StringBuffer StringBuffer sb2原创 2021-06-15 14:39:24 · 275 阅读 · 0 评论 -
Java StringBuffer 动态字符串
通过 + 进行拼接字符串,每次拼接,都会构建一个新的 String 对象,既耗时,又浪费内存空间,而这种操作还不可避免。那么有没有一种比较好的方式可以解决这个问题呢? 答案是肯定的,可以通过 Java 提供的 StringBuilder 类就来解决这个问题,它是一个可变的字符串。String:内容是不可变的。StringBuilder:内容是可变的。构造方法添加与反转方法[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VFHsoaGL-162...原创 2021-06-15 14:34:32 · 621 阅读 · 0 评论 -
Java equals、== 区别与用法
==:比较两个变量本身的值,即两个对象在内存中的首地址。(java中,对象的首地址是它在内存中存放的起始地址,它后面的地址是用来存放它所包含的各个属性的地址,所以内存中会用多个内存块来存放对象的各个参数,而通过这个首地址就可以找到该对象,进而可以找到该对象的各个属性)equals: 比较字符串中所包含的内容是否相同。案例代码public class test { public static void main(String[] args) { String s1 = "dzm"..原创 2021-06-11 11:19:36 · 126 阅读 · 1 评论 -
Java 字符串(String)构造方法
public class test { public static void main(String[] args) { // public String(): 创建一个空白字符串对象,不含有任何内容 String s1 = new String(); System.out.println("s1:" + s1); // public String(char[] value): 根据字符数组的内容,来创建字符串对象 char[] chs = {'a', 'b',原创 2021-06-11 11:10:35 · 427 阅读 · 1 评论 -
Java 类(私有属性、对象方法、类方法,构造函数)
public class Person { // 名字 String name; // 年龄 ( private 为私有属性,外部不能访问 ) private int age; // 无参构造方法 格式:public 类名(参数) {} public Person() { System.out.println("无参构造方法"); } // 有参构造方法 public Person(String name) { this.name = name;原创 2021-06-11 10:18:44 · 666 阅读 · 1 评论 -
Java 数组(Array 基本操作)
数组格式定义// 格式一(推荐写法):数据类型[] 变量名// 定义了一个 int 类型的数组,数组名是 arr1int[] arr1;// 格式二:数据类型 变量名[]// 定义了一个 int 类型的变量,变量名是 arr1 数组int arr2[];静态初始化// 格式:数据类型[] 变量名 = new 数据类型[]{数据1,数据2,数据3,...}int[] arr1 = new int[]{1,2,3};// 简化格式:数据类型[] 变量名 = {数据1,数据2,数..原创 2021-06-10 11:46:54 · 349 阅读 · 0 评论 -
Java Random(随机函数)
// 导库import java.util.Random;public class test { public static void main(String[] args) { // 创建对象 Random r = new Random(); // 获取随机数,随机范围 0-10, 包括0,不包括10 int x = r.nextInt(10); // 输出数据 System.out.println(x); } }...原创 2021-06-09 11:45:47 · 284 阅读 · 0 评论 -
Java Scanner(cmd数据输入)
// 导库import java.util.Scanner;public class test { public static void main(String[] args) { // 创建对象 Scanner sc = new Scanner(System.in); // 接受数据,这里设定为只接受数字,非数字则会报错 int x = sc.nextInt(); // 输出数据 System.out.println(x); // 关闭输入原创 2021-06-09 11:32:17 · 436 阅读 · 0 评论 -
Java 逻辑运算符(&、|、^、!、&&、||)
一、逻辑运算符短路逻辑运算符 与 逻辑运算符 的区别是:逻辑运算符:先走一遍,在判断短路逻辑运算符:一但符合条件,后面的判断不走二、逻辑运算符逻辑运算符:&、|、^、!案例代码public class test { public static void main(String[] args) { // 定义变量 int i = 10; int j = 20; int k = 30; // &:有 false原创 2021-06-09 11:16:00 · 7494 阅读 · 0 评论 -
Java 类型转换
表示数据类型内存范围 从小到大 图自动类型转换把一个表示数据 范围小的数值 或者 变量 赋值给另一个表示数据 范围大的变量。下面案例说明,把范围 小的 赋值给 大的 是可以的,但是不可以跨 大数据类型 转换,例如:整数转整数、浮点数转浮点数 …public class test { public static void main(String[] args) { // (可以) byte 类型赋值给 short 类型变量 byte a = 10; short..原创 2021-06-07 18:44:31 · 104 阅读 · 0 评论 -
Java 数据类型
Java 是 强类型 语言,对于每一种数据都给出了明确的数据类型,不同的数据类型 也分配了 不同的内存空间,所以它们表示的 数据大小 也是不一样的。数据类型内存占用和取值范围原创 2021-06-07 18:22:08 · 98 阅读 · 0 评论 -
Java 常量分类
常量分类测试代码public class test { public static void main(String[] args) { // 字符串常量 System.out.println("HelloWorld"); System.out.println("----------"); // 整数常量 System.out.println(666); System.out.println(-666); System.out.p..原创 2021-06-07 18:17:46 · 368 阅读 · 0 评论 -
Java 基础开发环境搭建(VsCode)
常用的编辑器推荐:IntelliJ IDEA、Eclipse、MyEclipse… 看自己喜欢。这里用的是 VsCode,因为是单纯的学习一下 Java,不需要特别复杂的编译环境,所以看自己喜好就行。VsCode 插件安装 Java Extension Pack,它是 Java 开发环境扩展包,包含多个插件,不需要自己去找,一键安装基本就可以正常写代码了,该 扩展包 大概包含下面这些插件:Language support for Java ™ for Visual Studio Cod..原创 2021-06-07 17:56:28 · 289 阅读 · 0 评论 -
Java cmd 中 java 与 javac 的区别与使用
javac:是编译命令,将 java 源文件编译成 .class 字节码文件java:是运行字节码文件,由 java 虚拟机对字节码进行解释和运行,下面 $ java test,这个 test 会自己对应 test.class 文件,如果没有找到则会报错。总结:所以想要单独运行一个 .java 的文件方式一:先通过 $ javac test.java 得到 test.class,再通过 $ java test 运行。方式二:直接 $ java test.java..原创 2021-06-07 17:54:00 · 902 阅读 · 0 评论