JavaSE
JavaSE知识区
WxxCoder
Java开发工程师
展开
-
多线程中,run方法报错是否会影响到主线程?
在程序执行时,首先执行main主线程的同时,创建执行子线程,此时主线程与子线程同时执行,当主线程执行结束时,子线程继续执行。原创 2022-08-07 16:02:52 · 553 阅读 · 0 评论 -
接口和抽象类区别
相同: 都不能实例化。不同: 属性: 接口的属性只能被public static final修饰; 抽象类属性任意; 构造方法:接口不可定义(因为属性被final修饰属性值不可更改)抽象类可以定义。 方法: 接口只能定义抽象方法,方法默认被pu...原创 2021-09-13 20:35:22 · 74 阅读 · 0 评论 -
多线程间是如何共享数据的?
说明:Java里面进行多线程通信的主要方式是:共享内存。共享内存主要的关注点有两个:可见性和有序性原子性。 JVM解决了可见性和有序性问题,锁解决了原子性问题。理想情况下我们希望做到“同步”和“互斥”:实现方法如下1.将共享的数据抽象成一个类,并将数据的操作作为这个类的方法。 优点:这种设计容易做到同步,只要在方法上用“synchronized”修饰即可。MyData.java(数据类)public class...转载 2021-09-10 19:28:32 · 1226 阅读 · 3 评论 -
HashSet存储自定义类型元素去重原理
HashSet是用Hash算法实现存取对象,所以每个对象都有自己的hashCode; 1.当存储自定义类型元素时,在类中必须重写hashCode()和equals()方法:将hashCode()方法重写为属性相同的对象值返回值一样,属性不同的返回值不一样; 将equals()方法重写为属性相同时返回true,属性不同时返回false。 2.存取对象时,HashSet会调用对象的hashCode来比较Se...原创 2021-09-10 16:02:03 · 510 阅读 · 0 评论 -
Set集合中TreeSet的有序问题
众所周知,在集合中,Set集合是无序、无索引、不可重复的,但其中有一个子类是有序的,那就是TreeSet,TreeSet的底层使用的是TreeMap实现。代码案例:import java.util.Set;import java.util.TreeSet;public class Test { public static void main(String[] args) { Set<Person> set = new Tr...原创 2021-09-10 15:53:03 · 864 阅读 · 0 评论 -
String与StringBuilder的传参问题
问题:众所周知,如果传递的是一个引用类型,传递的是引用地址,而不是对象本身,所以方法对这个引用修改,会影响原值。 String是一个引用类型,但是将它传递给方法后,原值并没有受到影响。public class Test02 { public static void main(String[] args) { String str = "abc"; change(str); System.out.println...原创 2021-09-09 19:54:05 · 435 阅读 · 0 评论 -
多线程-守护线程Daemon的结果输出问题
代码案例:package com.study.enety.demo41;import java.io.*;public class Test02 { public static void main(String[] args) { Thread t1 = new Thread() { public void run() { while (true) { System.out.原创 2021-09-08 16:13:42 · 96 阅读 · 0 评论 -
NumberFormat
概述:所有数据格式的抽象基类,用于格式化和解析任何语言环境的数值。特点:1.java.text包。2.该类时抽象类,不能创建对象。3.提供了表示数字的不同格式。创建解析格式对象方法:1、public static final NumberFormat getInstance():返回当前默认环境的通用数值格式2、public static final NumberFormat ...原创 2021-08-30 19:02:13 · 111 阅读 · 0 评论 -
集合-Comparator和Comparable比较器使用
说明: 1.Comparator和Comparable都是用来比较数据的接口。 2.排序方式相同。方法: compare(Object o1, Object o2) o1:集合中的数据,o2:即将添加的数据。 compareTo(Person p) 返回值为0,添加的元素重复,去重。 返回值为-1,添加的元素比较大,放在右子树。...原创 2021-08-28 16:16:15 · 257 阅读 · 0 评论 -
IO-为什么InputStream的read()方法返回值为int类型
字节输入流InputStream可以读取任何类型的文件,这些文件的底层都是以二进制形式存储。如果每次读取都读取到byte,有可能在读取中途遇到11111111,那么11111111在byte类型中表示-1,程序在遇到-1就会停止不读了,后面的数据就读不到了,所以读取的时候用int类型接收,在每个字节前补24个0,凑够4个字节(一个int类型占4个字节),那么byte类型的-1就会变成int类型的255了,这样就可以保证整个数据读取完,而结束标记的-1就是int类型。...原创 2021-08-27 15:53:26 · 488 阅读 · 0 评论 -
JavaSE面试题-基础语法(持续更新)
1.&和&&的区别&&:逻辑与运算符左右两边的表达式都为true时,才返回true。具有短路性:如果第一个表达式值为false,则直接返回false。&:逻辑与、按位与逻辑与:不具有短路性。按位与:(常用)。2.基本类型和引用类型byte、short、int、long、float、double、char、boolean;除了基本数据数据类型,其他的都是引用类型。基本数据类型:数据直接存储在栈上。引用数据类原创 2021-08-23 18:58:04 · 207 阅读 · 0 评论 -
JDK动态代理解析—案例说明
ad废话少说,直接上代码!案例说明:一个卖U盘的厂家依靠中间商(代理)出售U盘。项目结构:UsbSell.javapackage com.study.service;/** * 目标接口 */public interface UsbSell { //卖U盘的方法 float sell(int amount);}UsbKingFactory.javapackage com.study.factory;import com.study.se...原创 2021-08-21 16:28:52 · 111 阅读 · 0 评论 -
数组—arraycopy()的用法
格式:arraycopy(要复制的数组,复制数组的起始位置,目标数组,复制的元素个数);例子:int[] a = {1,2,3,4,5,6}; int[] b = new int[4]; //将数组a从第2个索引位置开始,截取4个元素到数组b从索引为0开始的位置添加。 System.arraycopy(a, 2, b, 0, 4); System.out.print("复制的新数据: "); for (int i = 0; i < b....原创 2021-08-11 10:06:00 · 2052 阅读 · 0 评论