JavaSE
文章平均质量分 64
Java基础教程
Rsun04551
也许当我老了,也一样Code;不为别的,只为了爱好。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java开发学习路线
这些是初级Java开发工程师应该掌握的核心技术和知识,随着经验的积累,你可以深入研究更多高级主题和相关领域,如JavaEE、微服务架构、前端开发等,以提升自己的职业发展。Java高级开发工程师需要具备广泛的知识储备和丰富的实战经验,能够独立负责复杂项目的设计、开发和部署,同时具备解决系统性能和安全问题的能力。Java高级开发工程师需要具备深入的技术功底和广泛的实战经验,同时要对系统架构设计和性能优化有较高的理解。这些技术和知识将帮助中级Java开发工程师在开发更复杂的应用程序和系统时更加自信和高效。原创 2023-10-07 15:50:15 · 198 阅读 · 0 评论 -
Java中内存模型
基本类型作为参数传递时,其实就是将基本类型变量x空间中的值复制了一份传递给调用的方法show(),当在show()方法中x接受到了复制的值,再在show()方法中对x变量进行操作,这时只会影响到show中的x。这时会有两个引用同时指向堆中的同一个对象。当执行show方法中的d.x=6时,会根据d所持有的引用找到堆中的对象,并将其x属性的值改为6.show方法弹栈。由于是两个引用指向同一个对象,不管是哪一个引用改变了引用的所指向的对象的中的值,其他引用再次使用都是改变后的值。原创 2024-01-10 12:28:42 · 442 阅读 · 0 评论 -
正则表达式相关知识点
正则表达式是一种强大的文本匹配和处理工具,它可以用来在文本中搜索、匹配、替换特定的模式。:正则表达式是编译原理中的重要概念,用于词法分析器(lexer)和语法分析器(parser)的实现。总的来说,正则表达式是一种强大的文本处理工具,可以在各种场景下实现高效的文本匹配和处理操作。:可以用来验证用户输入的数据是否符合指定的格式,比如邮箱格式、电话号码格式、密码复杂度等。:在 web 开发中,可以使用正则表达式来实现灵活的 URL 路由匹配。:在网络爬虫中,可以使用正则表达式来匹配和提取目标网页中的信息。原创 2023-09-25 08:55:57 · 270 阅读 · 0 评论 -
String类中常用方法的作用
提取子字符串,第一个方法从指定索引开始到字符串末尾,第二个方法从指定索引开始到指定索引结束。类是Java中常用的字符串类,提供了许多用于操作字符串的方法。比较字符串的大小,返回负数、零或正数,用于字符串的字典序比较。返回字符串对象的规范化表示,用于将字符串添加到字符串常量池中。将当前字符串与指定字符串连接起来,生成一个新的字符串。和 lastIndexOf(String str)类的基本操作,使得字符串的处理更加方便。查找指定子字符串在字符串中的位置。替换字符串中的字符或子字符串。原创 2023-08-14 10:28:01 · 375 阅读 · 0 评论 -
Synchronized和Lock的区别
在分布式开发中,锁是控制线程安全的重要方式。Java提供了两种锁机制synchronized 和 Lock。原创 2023-02-12 19:58:16 · 365 阅读 · 0 评论 -
Java线程池应用实例
线程池是多线程的一种处理方式,处理过程中将任务添加到队列中,线程创建完成后自动启动这些任务,任务就是实现了Runnable或Callable接口的实例对象。可以根据系统需求和硬件环境灵活控制线程的数量,对线程进行统一管理。3、12306网上购票。原创 2023-01-25 19:51:17 · 6036 阅读 · 2 评论 -
Java线程池(超详细)
抽象类,实现了ExecutorService。原创 2023-01-25 16:07:56 · 1238 阅读 · 0 评论 -
Java中的枚举(看这篇就够了)
Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一个年的 12 个月份,一个星期的 7 天,方向有东南西北等。Java 枚举类使用 enum 关键字来定义,各个常量使用逗号 , 来分割。原创 2023-01-22 15:18:50 · 478 阅读 · 0 评论 -
Java 注解(Annotation)
Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java 标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留标注内容,在运行时可以获取到标注内容。当然它也支持自定义 Java 标注。原创 2023-01-08 09:19:47 · 115 阅读 · 0 评论 -
Json数据格式
JSON 基本使用原创 2022-09-19 14:21:11 · 163 阅读 · 0 评论 -
HashMap中套map的作用
map套map就是将前一个map中的数据填充到map中(必须保证两个集合中的泛型一致)public static void main(String[] args) { HashMap<String, String> hashMap = new HashMap<>(); hashMap.put("1", "11"); hashMap.put("3","33"); HashMap<String, String>原创 2021-07-20 20:10:29 · 410 阅读 · 0 评论 -
为什么计算机要用补码的方式来表示负数?
在回答这个问题前,我们假设不用补码的方式来表示负数,而只是把最高位的符号标志位变为 1 表示负数,如果采用这种方式来表示负数的二进制的话,试想一下 -2 + 1 的运算过程,如下图:按道理-2 + 1 = -1,但是上面的运算过程中得到结果却是 -3,所可以发现,这种负数的表示方式是不能用常规的加法来计算了,就需要特殊处理,要先判断数字是否为负数,如果是负数就要把加法操作变成减法操作才可以得到正确对结果,比如上述通过判断-2为负数,表达式转成-2-1,最后的运算结果刚好是-1,这就非常不好了,毕竟加减原创 2021-05-13 17:05:36 · 533 阅读 · 1 评论 -
多线程死锁的产生以及如何避免死锁
1、什么是死锁指多个线程因竞争资源而造成的一种僵局(互相等待),具体代码就是同步中嵌套了其他同步,这种现象称为死锁:比如过独木桥问题,其他锁还有可重入锁、可中断锁、公平锁和同步锁2、产生死锁的原因系统资源的竞争进程请求和释放资源的顺序不对死锁产生的必要条件产生死锁必须同时满足以下四个条件,只要其中任一条件不成立,死锁就不会发生互斥条件:进程要求对所分配的资源(如打印机)进行排他性控制,即在一段时间内某资源仅为一个进程所占有。此时若有其他进程请求该资源,则请求进程只能等待不剥夺条件:进程原创 2021-05-06 16:20:52 · 630 阅读 · 1 评论 -
JAVA中的native是什么
1、一个native方法就是一个Java调用非Java代码的接口。一个native方法是指该方法的实现由非Java语言实现,比如用C或C++实现。2、在定义一个native方法时,并不提供实现体(比较像定义一个Java Interface),因为其实现体是由非Java语言在外面实现的。主要是因为JAVA无法对操作系统底层进行操作,但是可以通过jni(java native interface)调用其他语言来实现底层的访问。native主要用于方法上。原创 2021-05-03 00:35:00 · 2337 阅读 · 0 评论 -
为什么 String hashCode 方法选择数字31作为乘子?
1、源码首先看下String源码里的hashCode是如何实现的:public int hashCode() { int h = hash; if (h == 0 && value.length > 0) { char val[] = value; for (int i = 0; i < value.length; i++) { h = 31 * h + val[i]; }原创 2021-05-03 00:17:38 · 191 阅读 · 0 评论 -
Java中的泛型(看这篇就够了)
因此 在JDK5之后,新增了泛型(Generic)语法,让你在设计API时可以指定类或方法支持泛型,这样的话我们使用API的时候也变得更为简洁,并得到了编译时期的语法检查。)是可以存放任意对象的,只要把对象存储集合后,那么这时他们都会被提升成Object类型。我们来分析下:由于集合中什么类型的元素都可以存储。举个例子,比如:现已知Object类,String 类,Number类,Integer类,其中Number是Integer的父类。之前设置泛型的时候,实际上是可以任意设置的,只要是类就可以设置。原创 2021-04-28 16:48:36 · 283 阅读 · 0 评论 -
如何让线程池里面的线程按照顺序执行?
笔者今天看到一个有趣的面试题,如何让多个线程按照既定的顺序依次执行?比如每个线程输出一个整数,那么期望就是这样的:0,1,2,3,4,5,6,7,8,9.而不是0,2,4,1,3,5,8,7,9,6乍一看,这不是反人性的考题吗?多线程本来就以乱序执行出名的。稍加思索,想到3种解决方案,分别用代码实现之。方法1: 使用join方法方法2:使用newSingleThreadExecutor方法3:使用ThreadPoolExecutor,设置它的核心线程数为1。原创 2021-04-13 16:56:28 · 6862 阅读 · 5 评论 -
List有序可重复,Set无序不重复!
List是有序且重复的,Set是无序不重复的。这里说的顺序有两个概念,一是按添加的顺序排列,二是按自然顺序a-z排列。Set并不是无序的,传统说的Set无序是指HashSet,它不能保证元素的添加顺序,更不能保证自然顺序,而Set的其他实现类是可以实现这两种顺序的。保证元素添加的顺序,不保证元素自然的顺序,可重复:List不保证元素添加的顺序,不保证元素自然的顺序,不可重复:HashSet保...原创 2020-02-14 21:57:48 · 2693 阅读 · 0 评论 -
List集合如何去重?
将list集合放入LinkedHashSet集合中,然后再重新添加到list集合中。\color{#FF0000}{将list集合放入LinkedHashSet集合中,然后再重新添加到list集合中。}将list集合放入LinkedHashSet集合中,然后再重新添加到list集合中。实例:package com.xhy.xczx.test;import java.util.*;/**...原创 2020-02-14 22:19:28 · 1448 阅读 · 0 评论 -
Java Map集合的几种遍历方式与性能对比(包含lambda表达式)
实例代码如下:public static void main(String[] args) { Map<String, String> map = new HashMap<String, String>(); map.put("key1", "value1"); map.put("key2", "value2"); ...原创 2020-02-15 10:45:21 · 950 阅读 · 1 评论 -
Java中的反射(看这篇就够了)
在运行状态中,对于任意一个对象,都能够知道这个对象的所有属性和方法;这种动态获取信息以及动态调用对象的方法的功能称为java语言的反射机制//成员变量//构造方法System.out.println("空参数构造方法");System.out.println("带有String的构造方法");//私有的构造方法System.out.println("带有String,int的构造方法");原创 2021-04-10 13:52:49 · 609 阅读 · 1 评论 -
“==“和equals方法有什么区别(面试)
1.简述" == " 比较的是值" == " 如果比较的是基本数据类型,比较的则是变量值" == " 如果比较的为引用数据类型,比较的则是地址值equals比较的是引用数据类型如果没有重写hashCode和equals方法,比较的是地址值。因为Object的equals方法中使用是" == " 。如果重写hashCode和equals方法,则比较的重写后的规则。2.代码演示/*** 等号 ==*/public class TestEq { public static void原创 2020-10-11 09:59:58 · 680 阅读 · 2 评论 -
Java抽象类
抽象方法:只定义方法不实现方法体的方法抽象类:被abstract修饰的类,不能被实例化,继承的子类必须实现抽象类中的方法//有抽象方法的类必须被声明为abstract public abstract class Test1 {//不带"{}"的方法叫抽象方法 public abstract void f();原创 2020-10-11 11:15:28 · 967 阅读 · 1 评论 -
Java的基本算法
思想:先取一个基数,下标从右向左找比基数小的,从左向右找比基数大的,找到和基数互换位置,然后进行下一轮操作,然后递归调用快排算法。实现思想:小的放前边,找一个index,放最小的索引,循环一轮得到一个最小值。实现思想:已知是排好序的数组,用中间元素和要查找的元素比较,大的话取左边。使用动态规划:将可能出现的结果全部计算并保存,直到得到所需要的结果。实现思想:从左往右比较找到最小值,从左往右依次排放。实现思想:从头开始,依次相邻比较,把最大的放到最后边。实现思想:遍历数组,查找相同的元素。原创 2020-06-11 13:07:20 · 281 阅读 · 1 评论 -
String,StringBuffer和StringBuilder的区别及使用场景
String:字符串常量 。StringBuffer 与 StringBuilder是字符缓冲变量。StringBuffer 与 StringBuilder 中的方法和功能完全是等价的,只是StringBuffer中的方法大都采用了synchronized 关键字进行修饰,因此是线程安全的,而StringBuilder没有这个修饰,可以被认为是线程不安全的。StringBuilder 是在JDK1.5才加入的。jdk的实现中StringBuffer与StringBuilder都继承自AbstractSt原创 2020-10-11 09:18:04 · 1887 阅读 · 0 评论 -
Java中Object对象的常用方法
Java中Object对象的常用方法:我们都知道,Object是所有类的根类,是所有类的老祖宗。有必要对Object类里的方法进行解析,下面来解析一下Object类的几个常用方法:equals,hashcode,toString,getClass,notify,notifyAll,wait,finalize和clone方法。1、关于equals()方法:源代码:public boolean equals(Object obj) { return (this == obj);}原创 2020-10-09 16:30:41 · 307 阅读 · 0 评论 -
15-Java设计模式
,这样,在它的赋值完成之前,就不用会调用读操作。应用实例:1、去肯德基,汉堡、可乐、薯条、炸鸡翅等是不变的,而其组合是经常变化的,生成出所谓的"套餐"。只有指明具体的子类,才可以用来定义对象,例如:带空心箭头的虚线,车由自行车来实现其具体的功能。4、创建监工Director类,编写建造房子build方法,方法体里调用创建地基、钢筋工程、铺电线、粉刷四个方法,并返回House对象。创建电视和汽车接口,创建具体类来实现,然后创建工厂接口,创建具体工厂类实现工厂接口,在测试类中创建具体工厂类,调用其中的方法。原创 2021-04-10 13:55:56 · 215 阅读 · 0 评论 -
11-网络编程
Reflection经典的Person类package reflect;//定义姓名和年龄public class Person {// 先public后私有化public String name;private int age;public Person() {}private Person(String name) { super(); this.name = name;}public Person(int age) { super(); this.age = age;原创 2021-04-10 13:50:40 · 125 阅读 · 0 评论 -
8、集合和泛型
数据存储的常用结构有:堆栈:先进后出,像个容器,入口和出口都是栈顶、压栈和弹栈都是操作栈顶元素。队列:先进先出、队列的入口和出口各占一侧。数组:通过索引查找元素速度快;增删元素速度慢。链表:多节点之间通过地址连接,增删只需要修改下个元素的地址速度比较快,没有索引位置查找速度比较慢。0、Colllection集合中存放的数据都是引用数据类型,基本类型需要自动装箱,公有的方法有增删改查方法。ArrayList继承AbstractList抽象类,实现List接口,而List接口又继承于Collecti原创 2021-04-10 14:07:25 · 114 阅读 · 0 评论 -
6、包装类及其相关
①包装类1、其中需要注意int对应的是Integer,char对应的Character,其他6个都是基本类型首字母大写即可。2、字符串转成基本类型:包装类.parseInt(str);3、基本数值转成字符串有3种方式:(1)、基本类型直接与” ”相连接即可;34+""(2)、调用包装类中的toString方法;Integer.toString(34);(3)、调用String的valueOf方法;String.valueOf(34);4、基本数值---->包装对象(1)、Integer原创 2021-04-10 14:04:35 · 172 阅读 · 0 评论 -
05-异常
继承Exception构造方法(message){super(message);供其他子类throw和throws。原创 2021-04-10 13:48:14 · 133 阅读 · 0 评论 -
04-三大特征、变量、构造方法this、static、final关键字
要对setter方法进行限制,让代码符合语法逻辑和生活逻辑,比如说age有范围限制,要通过类对象.setNum()方法进行传值时要在setter方法中加if限制,要在构造方法中进行传值时要在 getter方法中加if限制。对象由类来创建,一个对象包含属性和方法,属性代表对象的数据,方法代表对象的行为。又叫静态变量,用static修饰,它可以直接用类名调用,也可以用对象调用 ,而且所有对象的同一个类变量共享同一块内存空间。没有名称的局部内部类,它通常用于创建只需使用一次的类的实例。原创 2021-04-10 13:46:34 · 291 阅读 · 0 评论 -
03-Random、数组、JSON格式、流程控制语句
可以看到,把数组a的第一个值改为10后,输出b的第一个值也是10,a和b两个变量引用了同一个数组。虽然保存的是基本类型值int,但是数组本身是引用类型的。我们假设要在程序中实现一个对数字求和的方法,由于参与求和数字的个数和类型都不确定,因此要针对不同的情况去设计不同的方法。有三种类型:单行注释、多行注释、文档注释 一般来说,对于一份规范的程序源代码而言,注释应该占到源代码的1/3以上。为了解决这个问题,Java允许在一个类中定义多个名称相同的方法,但是参数的类型或个数必须不同,这就是。原创 2021-04-10 13:44:42 · 396 阅读 · 1 评论 -
02-进制转换、基本数据类型和运算符
double(8)()、float(4)、char(2)、boolean(默认为false,占用内存1字节,存储空间基本计量单位为字节)%为整除取余符号,在做取余运算的时候,先按整数进行取余,然后看%左边数字的符号,如果%左边的数字是正数,那么结果就是正数。机器数:一个数在计算机中以二进制进行表示,机器数是带符号的,在计算机用一个数的最高位存放符号,正数为0,负数为1。要求:字母、数字、下划线和美元符号,数字不能在开头,不能是关键字(byte、int等53个)非(Not)、^异或、&&短路与、||短路或。原创 2021-04-10 13:43:23 · 473 阅读 · 0 评论 -
01-Dos基本指令和编译运行Java文件
Java 是Sun公司于1995年5月推出的语言,与我同岁。原创 2021-04-10 13:42:35 · 648 阅读 · 0 评论
分享