
JavaSE
文章平均质量分 70
zhangzeyuaaa
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
为什么UTF-8字节序列用ISO-8859-1这种单字节字符集解码成乱码后,可通过new String(wrongStr.getBytes(“ISO-8859-1“), “UTF-8“)恢复
这一方法本质上是利用了 ISO-8859-1 的“字节透明性”特性。UTF-8 的每个字节天然满足这一条件(UTF-8 使用 1~4 字节,每字节范围。:恢复过程中必须使用相同的 ISO-8859-1 编码重新编码字符串。,且该字符的 ISO-8859-1 编码值与原始字节值完全相同。:原始字节必须是有效的 ISO-8859-1 字符(即字节值在。如果使用其他编码(如 GBK),字节值会改变,导致恢复失败。,但被错误地用 ISO-8859-1 解码为字符串。假设原始 UTF-8 字节序列为。原创 2025-05-27 14:25:51 · 999 阅读 · 0 评论 -
Java Class 文件编码机制全解析
Java 的 class 文件是 JVM 实现跨平台兼容的核心载体,其编码规则直接影响程序的存储、传输和执行。本文基于 JVM 规范,系统解析 class 文件的结构与编码机制,涵盖字符串处理、符号名称存储、源文件编码影响等关键问题。通过理解 class 文件的编码机制,开发者能更好地处理国际化、调试字节码问题,并编写出健壮的跨平台 Java 程序。所有字符串数据(包括类名、方法名、字段名、字符串字面量等)均存储在常量池的。)采用何种编码(UTF-8、GBK、ISO-8859-1 等),原创 2025-05-26 23:14:02 · 844 阅读 · 0 评论 -
解析Java String.getBytes()编码与new String()解码的字符集转换机制
核心原则编码()与解码()字符集必须一致。始终显式指定字符集,避免依赖默认值。最佳实践优先使用常量(如UTF_8ISO_8859_1在文件、网络、数据库交互中明确声明字符集。避坑指南禁止用字符串处理二进制数据。跨系统交互时,验证字符集兼容性(如特殊符号的支持)。通过理解字符编码的本质并遵循上述实践,开发者可彻底告别乱码问题,确保文本数据在复杂场景下的正确性和可靠性。原创 2025-05-26 15:13:57 · 922 阅读 · 0 评论 -
百分比编码(Percent-Encoding)详解
百分比编码的本质是将字符的字节表示通过十六进制转义为URL安全格式编码与解码的字符集一致性:客户端编码(如UTF-8)与服务端解码字符集必须匹配。对字节而非字符的操作:编码结果仅反映字节值,与字符的语义无关。实际开发中,统一使用UTF-8是避免乱码的最佳实践,同时在处理URL参数时,优先使用(前端)和标准库的解码方法(后端),确保编码规则符合RFC标准。原创 2025-05-26 10:25:17 · 944 阅读 · 0 评论 -
Java file.encoding 属性详解:作用与影响
的默认编码受其影响,例如控制台输出的字符编码。包装网络字节流时,若未显式指定编码,会依赖。在协议中明确编码格式(如 HTTP 头部声明。的潜在影响,确保应用在不同环境中稳定运行。处理网络数据时,若未指定编码,同样依赖。当使用以下类未显式指定编码时,默认使用。是 Java 的系统属性,用于指定。在以下操作中未指定编码时,依赖。强制通信双方使用同一种编码(如。通过遵循最佳实践,可彻底消除。原创 2025-05-26 09:30:11 · 460 阅读 · 0 评论 -
计算机字符世界的底层逻辑:从符号到编码的全解析
在计算机处理文本的过程中,字符、字符集、码点与编码构成了一套精密的符号系统。这套系统不仅是人类语言数字化的基石,更折射出计算机技术从本地化到全球化的演进历程。本文将结合技术原理与历史脉络,深入解读这些核心概念及其相互关系。原创 2025-05-26 09:02:25 · 548 阅读 · 0 评论 -
Java字符编码转换:从UTF-8到GBK的实现原理与实践
Java实现UTF-8到GBK的转换,本质是通过Unicode作为中间桥梁解码阶段:将源编码(UTF-8)的字节流转换为Java内部的Unicode字符串(String编码阶段:将Unicode字符串按目标编码(GBK)规则生成字节流。原创 2025-05-25 22:17:05 · 1091 阅读 · 0 评论 -
Java获取classpath根路径的方式
上述几种方法在不同场景下有各自的优势,可根据具体需求来选择合适的方法。能获取类路径,该路径由多个路径组成,以分隔符分隔。分隔符将其分割成多个路径元素,最后输出这些元素。方法来获取类路径的根路径,最后输出其路径。方法来获取类路径的根路径,然后输出该路径。方法可用于获取类路径下资源的。时,就能得到类路径的根路径。在上述代码中,先获取当前类的。即可得到类路径的根路径。方法获取类路径,再使用。原创 2025-03-31 11:08:20 · 471 阅读 · 0 评论 -
Linux安装JDK
完成JDK安装后,接下来开始配置环境变量。原创 2025-01-16 13:32:25 · 251 阅读 · 0 评论 -
Java 线程池的核心线程数已满,什么情况下会创建新的线程?
是创建新线程的必要条件。此时,线程池会突破核心线程数限制,创建新线程直至达到最大线程数,后续任务将。原创 2025-03-09 19:55:25 · 321 阅读 · 0 评论 -
Java线程池 execute方法和submit方法,异常处理有何不同?
execute方法execute方法是Executor接口定义的方法,在类中实现,用于提交一个Runnable任务到线程池执行。submit方法submit方法是接口定义的方法,有多个重载版本,可接受Runnable或Callable任务,并且会返回一个Future对象,用于获取任务的执行结果。execute方法提交的任务抛出异常时,异常会直接影响工作线程,需要在任务内部或通过线程的进行处理。submit方法提交的任务抛出异常时,异常会被封装在Future对象中,需要通过调用Future的get。原创 2025-03-09 13:10:23 · 419 阅读 · 0 评论 -
Java主线程能拿到子线程抛出的异常吗?
在Java中,主线程默认情况下不能直接拿到子线程抛出的异常。原创 2025-03-08 11:35:45 · 381 阅读 · 0 评论 -
httpclient4.5 的 httpclient对象是可以作为单例复用的吗?
Apache HttpClient 4.5 的 `HttpClient` 对象可以作为单例复用,且这是官方推荐的最佳实践原创 2025-03-06 13:13:59 · 947 阅读 · 0 评论 -
Java| Charset.defaultCharset()和file.encoding的关系
返回此 Java 虚拟机的默认 charset。默认 charset 在虚拟机启动时决定,通常根据语言环境和底层操作系统的 charset 来确定。是操作系统的编码,可以通过虚拟机启动时指定属性,来更改指的是jvm输入流、输出流默认使用的编码/解码方式。当我们需要指定编码格式,可以通过JVM参数在启动的时候进行设置,从而不受操作系统和语言环境的影响.获取默认编码格式的源码如下:①当我们不手动设置JVM参数。转载 2024-06-26 11:57:06 · 548 阅读 · 0 评论 -
Java位运算在程序设计中的使用:位掩码(BitMask)
Java位运算在程序设计中的使用:位掩码(BitMask)转载 2022-06-01 13:47:09 · 813 阅读 · 0 评论 -
使用sleep避免java死循环导致的CPU占用率过高
sleep(long millis) 线程睡眠 millis 毫秒使用sleep方法可以避免cpu空转,防止cpu占用率过高。public static void main(String[] args) { while (true) { // you code... try { Thread.sleep(3); } catch (InterruptedException e) { e.printS原创 2021-11-02 11:40:31 · 1811 阅读 · 0 评论 -
Java try catch finally执行顺序
package com.zzj.exception.demo1;public class ExeOrder { static int i = 0; public static void main(String[] args) { System.out.println(getInt()); System.out.println(i); } static int get...原创 2020-03-01 11:15:52 · 383 阅读 · 0 评论 -
Java九种数据类型
代码如下:package zzj.test.main;/** * Java九种基本数据类型 * @author lenovo * */public class Main { /** * @param args */ public static void main(String[] args) { //byte System.out.println("Clas原创 2013-08-17 11:36:20 · 1765 阅读 · 1 评论 -
为什么需要ThreadLocal模式
下面的变量都是指的引用变量。 如果我们在方法中要使用方法外的变量(不包括当前类或者父类的成员变量),有两种方式可以引用到方法外的变量: 1.方法传参。 2.将需要被引用的变量定义为类的静态变量。 两种方式都有弊端:方法传参的弊端是可能需要在很多地方传递这个参数(因为变量的存储和获取可能在不同的模块中);定义为类的静态变量则会引发线程安全问题。 为了解决以上两个问题,SUN公司的技术人员提出原创 2015-02-06 14:52:17 · 3537 阅读 · 1 评论 -
一种给Map赋值的优雅方式
直接上代码:public static void main(String[] args) throws Exception { Map<String, String> map = new HashMap<String, String>(){ private static final long serialVersionUID = 1L;原创 2015-02-06 17:12:33 · 42044 阅读 · 4 评论 -
【JavaSE】关于foreach
foreach语句可用于遍历数组或集合。遍历数组好说,但是能遍历哪些集合呢?Java规定,一个集合要能被foreach遍历,必须实现java.lang.Iterable接口。Set, List,Queue都继承Collection接口,而Colleciton接口继承与Iterable,所以Java库中提供的Set,List,Queue都可以使用foreach来遍历持有的元素。原创 2015-01-01 21:22:04 · 668 阅读 · 0 评论 -
Java只读集合与同步集合
直接上代码:package com.xs.collection;import java.util.ArrayList;import java.util.Collections;import java.util.List;public class ReadOnly { /** * @param args */ public static void main(Str原创 2015-02-09 11:42:28 · 4486 阅读 · 0 评论 -
Java泛型的擦除是完全的吗?
我们都知道,Java的泛型在运行期会被擦除,但是真的是这样的吗?看下面的例子:package com.zzj.generic;import java.lang.reflect.Field;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import java.util.ArrayList原创 2015-01-21 22:48:25 · 1020 阅读 · 0 评论 -
【JavaSE】Class.getResource(String name)和ClassLoader.getResource(String name)
ClassClass.getResource("") 获取当前类路径Class.getResource("/") 获取类的根路径ClassLoaderClassLoader.getResource("") 获取类的根路径ClassLoader.getResource("/") null假设包名为org.zzjClassClass.getResou原创 2015-01-05 18:08:42 · 1167 阅读 · 0 评论 -
java的debug和release编译方式
java编译成.class 有两种方式使用javac,默认使用的release方式。release模式下对于函数参数会改变public class Test{ private static void sayHello(){ System.out.println("Hello world"); } public转载 2015-06-04 22:38:39 · 6251 阅读 · 0 评论 -
JavaBean getter/setter命名规范[特例]
一般JavaBean属性以小写字母开头,驼峰命名格式,相应的 getter/setter 方法是 get/set 接上首字母大写的属性名。例如:属性名为userName,其对应的getter/setter 方法是 getUserName/setUserName。但是,还有一些特殊情况:1、如果属性名的第二个字母大写,那么该属性名直接用作 getter/setter 方法中 get/set原创 2015-06-26 13:39:59 · 6624 阅读 · 2 评论 -
Java获取字符的Unicode编码以及如何过滤特殊字符ZWNJ
获取Unicode编码package com.xs.test;public class Test { public static void main(String[] args) throws Exception { int decimal = ((int)'中'); System.out.println(decimal); // Unicode十进制编码 String he原创 2016-01-07 13:28:47 · 12375 阅读 · 0 评论 -
解惑tomcat如何将标准输出保存到文件——重定向System.out
看代码就懂:package com.xs.test;import java.io.FileOutputStream;import java.io.PrintStream;public class Test { public static void main(String[] args) throws Exception { String outPath = "C:\\out.log原创 2016-01-13 15:07:36 · 3731 阅读 · 0 评论 -
Java Class类以及获取Class实例的三种方式
java.lang 类 ClassT - 由此 Class 对象建模的类的类型。例如,String.class 的类型是Class。如果将被建模的类未知,则使用 Class。public final class Class extends Object implements java.io.Serializable, java.lang.r原创 2013-12-12 21:53:24 · 17139 阅读 · 0 评论 -
Java包装类常量池
Java的8种基本类型(Byte, Short, Integer, Long, Character, Boolean, Float, Double), 除Float和Double以外, 其它六种都实现了常量池, 但是它们只在大于等于-128并且小于等于127时才使用常量池。由如下例子可以看出:[java] view plaincopy原创 2013-08-17 15:20:01 · 2133 阅读 · 1 评论 -
【JavaSE】Java中BigDecimal的8种舍入模式
java.math.BigDecimal不可变的、任意精度的有符号十进制数。BigDecimal 由任意精度的整数非标度值和32位的整数标度(scale)组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以10的负scale次幂。因此,BigDecimal表示的数值是(unscaledValue × 10-scale)。与之相关的还有两个类:转载 2014-12-06 12:19:35 · 1019 阅读 · 0 评论 -
ThreadLocal类浅析
类图原创 2014-05-26 15:56:01 · 787 阅读 · 0 评论 -
Java强引用、软引用、弱引用、虚引用
1.对象的强、软、弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。图1为对象应用类层次。转载 2014-08-23 21:56:01 · 968 阅读 · 0 评论 -
Java时间格式转换
import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class DateFormat { /** * @param args */ public static void main(String[] args) { System.out原创 2013-12-24 10:03:27 · 826 阅读 · 0 评论 -
Java自引用以及陷阱
自引用是构造链表的基础Java自引用如下:class Node{ int data; Node node;}就是在类里定义一个指向自身的引用,但是这里有一个陷阱,我们把代码改为如下:class Node{ int data; Node node = new Node();}当我们创建这个类的对象时,会抛出java.lang.StackOverflowError,也就是栈溢出原创 2014-01-26 14:37:10 · 3439 阅读 · 0 评论 -
回调机制与好莱坞原则
《编程导论(Java)》在9.3.1回调中,介绍了好莱坞法则/好莱坞原则(Hollywood principle)第287页,并将它作为回调的近义词,即当程序中使用了回调,那么你的程序应用了"好莱坞法则"。Hollywood principle:"Don't call me; I'll call you." (don't call us, we'll call you)转载 2013-12-08 11:21:03 · 3707 阅读 · 1 评论 -
模拟Java对象克隆
浅度克隆先定义一个克隆的抽象类,专门负责克隆:package com.xs.object;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;public abstract class AClone原创 2014-01-24 14:14:01 · 953 阅读 · 0 评论 -
Java Integer装箱和拆箱
装箱:把基本类型用它们相应的引用类型包装起来,使其具有对象的性质。int包装成Integer、float包装成Float。拆箱:和装箱相反,将引用类型的对象简化成值类型的数据。Integer a = 100; 这是自动装箱 (编译器调用的是static Integer valueOf(int i))int b = new Integer(1原创 2013-08-17 15:28:30 · 1330 阅读 · 0 评论 -
深入Java对象的比较
深入Java对象的比较 一、简单类型比较 Java中,比较简单类型变量用“==”,只要两个简单类型值相等即返回ture,否则返回false; 二、引用类型比较 引用类型比较比较变态,可以用“==”,也可以用“equals()”来比较,equals()方法来自于Object类,每个自定义的类都可以重写这个方法。Object类中的equa转载 2013-08-17 14:02:57 · 752 阅读 · 0 评论 -
java path,classpath的概念解析
java中的path,classpath经常容易引起混淆,现做以下总结: 首先是JAVA_HOME环境变量,我们先来掌握这个环境变量的设置内容,JAVA_HOME这个环境变量的设置内容是JDK的安装目录,比如说您的JDK安装在d:\jdk1.6.0这个目录下,请您查看一下这个目录下是不是有一个子目录bin,bin目录中是不是有java.exe这个文件,如果是,那么您的JAVA_HOME转载 2012-12-14 17:28:37 · 997 阅读 · 0 评论