Java
NICEcold
路漫漫其修远兮,吾将上下而求索!
展开
-
字节流和字符流的使用记录
一、FileInputSream基本用法FileInputStream是按字节流读取数据的,读取文件时采用的编码方式即为文件自身编码方式,不需要手动指定。FileInputStream in = new FileInputStream("test.txt");read()方法会返回一个字节值,类型为intint a=in.read();或者一次读入多个字节,参数为byte数组byte[] bytes = new byte[10];in.read(bytes);将得到的字节数组还原为字符原创 2020-08-27 12:50:00 · 302 阅读 · 0 评论 -
java字节流读取utf-16文件时,出现-2、-1(UTF-16BE、LE分析)
在通过字节流读取utf-16的文件时,我发现得到的字节数组,最前面的两个字节总是-2 -1,于是就查了下资料,总结如下。UTF-16有如下几种情形(utf-16中一个代码单元由两个字节组成):UTF-16BE,其后缀是 BE 即 big-endian,代表大端 ,就是将代码单元的高字节放在低地址(后面)表示。UTF-16LE,其后缀是 LE 即 little-endian,代表小端,就是将代码单元的高字节放在高地址(前面)表示。UTF-16,没有指定后缀,即不知道其是大小端,所以字节流开始的两个字原创 2020-08-26 22:27:25 · 1359 阅读 · 0 评论 -
java二进制数赋值作为补码存在
举例:byte b= (byte) 0b10000001;对于这个赋值表达式,b的值是多少?可能觉得10000001的值是-1,那么此时b就等于-1了。事实上:System.out.println("b:"+b); //b: -127-127的二进制表示应该为11111111啊,为什么呢?你会发现10000001其实是11111111的补码,也就是说用二进制数赋值的时候,是作为补码存在的。其实,数值在计算机内部都是以补码形式存在的,输入的八、十、十六进制数都会转为二进制补码形式。一般来原创 2020-08-26 20:30:14 · 466 阅读 · 0 评论 -
String字符串内容不同,散列码却相同
由于hashCode方法定义在Object类中,因此每个对象都有一个默认的散列码,其值为对象的存储地址。但是在String类中重写了该方法,其字符串的散列码改为由其内容导出,这也就意味着不同的String对象,只要其内容相同,散列码就一定相同。那是不是内容不同,其散列码就一定不同呢?来看看散列码算法就知道了String类使用下列算法计算散列码:int hash = 0;for (int i = 0; i < length(); i++) hash = 31 * hash + charAt(i原创 2020-08-12 14:11:13 · 391 阅读 · 0 评论 -
idea快速生成文档注释(类注释和方法注释)
idea类注释模板在创建类的时候直接生成类注释两种方法:按照顺序打开File–>settings–>Editor–>File and Code Templates–>Includes–>File Header按照顺序打开File–>settings–>Editor–>File and Code Templates–>Files–>Class输入类注释代码(按照自己需求来即可):/** * @author ${USER} * #D原创 2020-08-11 10:11:01 · 6667 阅读 · 3 评论 -
idea通过package-info.java文件生成包注释
在对应的包目录下,点击右键-----> new -----> package-info.java包注释必须写在package语句上面原创 2020-08-10 20:23:49 · 4671 阅读 · 0 评论 -
int常量、变量转换byte、short、char
在java中,int类型是不能自动转换为byte、short、char的,需要进行强制转换,但是存在特殊情况例如int常量(整数常量默认为int)是可以能自动向下转换的,只要其值满足对应范围即可,例:byte a=127;byte b=128; //报错short c=32767;short d=32768; //报错char e=65;int变量是不能的,例:int a=127;byte b=a; //报错byte c=(byte)a;类似的有char常量、变量byte a原创 2020-08-10 14:46:43 · 989 阅读 · 0 评论 -
java可变参数与数组
可变参数是 Java 1.5 的时候引入的功能,它允许方法使用任意多个、类型相同的值作为参数。public static void main(String[] args) { print("1"); print("1", "2"); print("1", "2", "3");}public static void print(String... s) { for (String s : strs) System.out.print(s);原创 2020-07-24 20:31:35 · 1068 阅读 · 0 评论 -
Java中%与floorMod区别
首先,%被称为取余,Math.floorMod()被称为取模。对于a%b或者floorMod(a,b),两者在a、b符号相同的情况下,结果一样,a、b符号不同情况下,结果不一样,其原因在于两者计算原理不同:%取余运算在a/b这一步骤时,得到的商,向0方向舍弃小数,之后再计算a-b*(a/b)floorMod取模运算在a/b这一步骤时,得到的商,向负无穷方向舍弃小数,之后再计算a-b*(a/b)(假如直接除断,没有小数,结果就是0了)所以,对于符号相同的情况下,其商值肯定为正数,此时0方向和负无原创 2020-07-22 21:03:17 · 990 阅读 · 1 评论 -
java不能创建参数化类型的泛型数组
在java泛型中是不能实例化参数化类型的数组的,例如:Pair<String>[] table = new Pair<String>[10]; //Error这是为什么呢?其实主要是为了避免数组里出现类型不一致的元素。我们先看一下,数组是否可以存储其它类型元素Pair[] table = new Pair[10];table[0] = new Object();...原创 2020-04-01 19:35:20 · 2921 阅读 · 0 评论 -
java环境变量java_home和classpath的设置和javac、java命令的运用
一、开始在写这篇博客之前,我对这些环境变量也不是很了解,虽然以前开始学习java的时候,教程里就要我们配置这些,但是后来用了ide之后,发现这些环境变量都可有可无。但是如果你想在终端界面,能够很好的运行java程序的话,就需要理解一下这些环境变量和java命令。二、环境变量的理解(1)classpath通常来说,classpath环境变量代表的是类路径,指向的是jdk目录下的lib目录,...原创 2020-03-03 12:13:12 · 572 阅读 · 1 评论 -
static方法可以覆盖吗,不能!
首先,static方法是可以继承的,父类中的static方法,子类也可以调用。其次,子类中允许定义和父类static方法同名并且参数类型和个数都一致的static方法,并且子类对象在调用时,使用的是子类自身的。例如:public class Son extends Father{ static void print(){ System.out.println("son"...原创 2020-03-02 20:59:22 · 1920 阅读 · 0 评论 -
子类转为超类对象后,发生的成员方法以及成员变量的相关调用
首先,在学习JAVA的多态机制时,我们知道子类对象是可以向上自动转换为超类对象的,例如:public class Father { public int a=0; public int b=2; public int getA() { return a; } public void print(){ System.out.prin...原创 2020-03-02 17:52:00 · 246 阅读 · 0 评论 -
Java字符串码点与代码单元,offsetByCodePoints与codePointAt方法总结
首先在java字符串中,大多数字符由一个代码单元表示,而辅助字符则需要一对代码单元表示,一个代码单元即16位。码点代表一个字符对应的值。String类的length()方法返回的并不能代表字符串中字符的数量,而是代码单元的数量。在有辅助字符时两者是不一致的。String str=“????????”;int n=str.length(); // n=4原因在于字符????(U+1D546)需要两个代码单元...原创 2020-02-20 17:04:07 · 877 阅读 · 0 评论