Java
文章平均质量分 56
remo0x
no one
展开
-
【JUC】ConcurrentHashMap源码分析
注释取数方法没有加锁,所以会被存数方法影响聚合方法:size/isEmpty/containsValue,在没有被并发更新的情况下是准确的,但是存在并发更新时,上述聚合方法只是反映了map的一个瞬时状态,这种瞬时状态只能用于监测或估算,而不能用于程序控制和Hashtable一样,和HashMap相反,不允许使用null作为key或value属性常量MAXIMUM_CAPACITYmap在确定数组下标时,采用的是(length-1)&hash的方式,只有当length为2的指数幂的原创 2021-10-14 16:02:58 · 254 阅读 · 0 评论 -
【Java】POI读取Excel的两种模式
用户模式基本使用POI下usermodel相关包,它对用户友好,在ss包下有统一的接口,但它是把整个文件读取到内存中的,对于大量数据很容易导致内存溢出,所以只能用来处理相对较小量的数据示例代码public static List<Map<String, String>> readWorkbook(Workbook workbook) { if (workbook == null || workbook.getNumberOfSheets() == 0) {原创 2020-05-19 10:58:15 · 3365 阅读 · 1 评论 -
【Java】Java中的位运算符与、或、非、异或的使用
位运算符在处理整形数值时,可以直接对组成整形数值的各个位进行操作。这些位运算符在位模式下工作。位运算符包括:&、|、~、^令 ‘a’ = 129 = 10000001,’b’ = 128 = 10000000,则有如下操作:与(&)对应位都为1,结果为1,否则结果为0int a=129;int b=128;System.out.println("a与b的结果:"+(a&b));运行结果:a与b的原创 2017-04-15 00:40:03 · 3043 阅读 · 0 评论 -
【Java】javac编译时找不到文件的问题
1. 问题描述刚入门Java,用javac编译.java文件的时候,遇到找不到文件的问题,如下图所示:2. 背景已经设置好环境变量Path和classpath,如果没有设置,可以参考这篇文章《【Java】环境变量PATH和CLASSPATH》3. 问题原因1. 用记事本写Java源码时,有.txt隐藏后缀打开文件夹选项 -> 勾选文件扩展名 -> 重命名Ja...原创 2016-09-04 16:23:09 · 41238 阅读 · 2 评论 -
【Java】String、StringBuilder和StringBuffer的区别
三者关系String实现了Serializable、Comparable、CharSequence接口public final class String implements java.io.Serializable, Comparable&lt;String&gt;, CharSequenceStringBuilder继承了AbstractStringBuilder类,实...原创 2018-08-22 13:26:02 · 291 阅读 · 0 评论 -
【Java】==、equals()和hashCode()的区别
==1.用==进行比较的时候,比较的是变量的值。变量有两种类型:基本类型(int、double等)引用类型(类、数组等)2.对于基本类型,比较的是字面量int a = 12;int b = 12;System.out.println(a == b);# 输出:true3.对于引用类型,比较的是栈中reference的值int[] a = {1, 2};int[...原创 2018-08-19 16:08:58 · 276 阅读 · 0 评论 -
【Java】int、long等基本类型占用字节数
基本类型所谓的占用字节数,就是申请内存的时候所占的空间大小 类型 字节数 最小值 最大值 boolean 未指定,至少1字节,仅定义为取字面值true或false - - byte 1 -128(-2^7) 127(2^7-1) short 2 -32768(-2^15) 32767(2^15 - 1)...原创 2018-08-19 17:32:37 · 6694 阅读 · 1 评论 -
【Java】ArrayList、Vector、Stack和LinkedList的区别
继承关系ArrayList继承自AbstractListpublic class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.SerializableVector继承自AbstractList...原创 2018-08-27 19:02:49 · 2907 阅读 · 0 评论 -
【Java】为什么equals()和hashCode()需要同时重写?
equals()首先看下Object中的equals(),仅简单的用==比较两个对象public boolean equals(Object obj) { return (this == obj);}源码中对equals()的注释如下Indicates(指出) whether some other object is &quot;equal to&quot; this one.T...原创 2018-09-03 11:33:15 · 1449 阅读 · 0 评论 -
【Java】静态导入import static
1. 意义import static静态导入是JDK 1.5增加的特性,有两种使用方式:import static java.lang.Integer.*;或者import static java.lang.Integer.MAX_VALUE;解释:用.*时,表示导入类中的所有静态属性和方法。用静态名称时,表示只导入该静态属性或方法。静态导入后就可以直接用名称访问静态属性和方...原创 2018-11-23 23:40:45 · 3234 阅读 · 1 评论 -
【Java】环境变量PATH和CLASSPATH
1. Java的环境变量Windows下Java用到的环境变量主要有三个:JAVA_HOME、classpath、path。通俗可以这样理解:path是操作系统用 ,classpath是java编译器用。2. 作用1. JAVA_HOMEJAVA_HOME指向的是JDK的安装路径,如D:\JDK_1.7,在这路径下能够找到bin、lib等目录。2. pathpath是系统用...原创 2016-09-11 17:08:38 · 7403 阅读 · 0 评论 -
【Java】Java编译错误:需要class,interface或enum
源代码public class FirstSample{ public static void main(String[] args){ System.out.println("We will not use 'hello world!'"); }}错误信息错误分析这是由于Java文件的编码导致的问题。 通常使用“javac FirstSample.java”编译UTF-8编码的原创 2017-01-22 18:44:49 · 57369 阅读 · 7 评论 -
【Java】Java中类的构造方法特性
特性构造函数是在新建类时会执行的程序Duck d = new Duck();构造函数必须与类的名字一样,且没有返回类型Duck d = new Duck();如果没有构造函数,编译器会帮你写一个无参构造函数public Duck() {}构造函数可以重载(overload)public Duck() {}public Duck(int size) {}p...原创 2016-11-06 00:32:59 · 1682 阅读 · 0 评论 -
【Java】Java中的修饰符顺序
说明Java中的修饰符出现在字段声明中时的顺序与FieldModifier一致,这是习惯顺序,形成规范使用情况实例变量:[修饰符] 数据类型 名称 [=初值]方法:[方法修饰符] 返回类型 名称( [参数列表] ) [throws 异常类列表] {}七种实例变量的的修饰符FieldModifier顺序(oracle习惯顺序)public、p原创 2016-11-05 12:03:30 · 5382 阅读 · 2 评论 -
【Java】Java数组的声明和初始化
方法动态初始化:数组定义与为数组分配空间和赋值的操作分开进行静态初始化:在定义数字的同时就为数组元素分配空间并赋值默认初始化:数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则被隐式初始化两种格式类型名[] 数组名(常用)类型名 数组名[]方式同时声明和初始化类型名[] 数组名 = new原创 2016-11-05 13:53:25 · 5005 阅读 · 0 评论 -
【Java】基本数据类型与封装类、字符串的相互转换
一、基本数据类型与其对应的封装类之间的相互转换基本数据类型转换为封装类1·直接赋值 (自动打包)Integer i=3; 2·使用封装类的含参构造函数(实例化)Integer i=new Integer(3); 3·使用封装类提供的valueOf()方法(静态方法)Integer i=Integer.valueOf(3); 封装类转换为基本数据类型...原创 2016-11-07 01:04:50 · 3065 阅读 · 0 评论 -
【Java】Java多线程实现的聊天客户端和服务器
主要涉及知识·Java中GUI程序的编写,包括事件监听机制。·Java的网络通信编程,ServerSocket,Socket类的使用。·Java中多线程的编程,Thread类,Runnable接口的使用。源代码客户端package project1;import java.awt.*;import java.awt.event.*;import java.i原创 2016-10-14 13:22:41 · 9262 阅读 · 4 评论 -
【Java】Java的命令行参数
说明命令行参数就是main方法里面的参数String[] args,args只是数据类型的一个名称,可任意命名当你在Java命令行后面带上参数,JVM就直接把参数存放到了main方法中的参数String数组里格式Java中的命令行参数格式:public static void main(String[] args)C++风格格式:public stati原创 2016-11-05 11:00:57 · 2339 阅读 · 0 评论