java 必知必会
这就是编程
十年互联网开发老兵,前阿里巴巴技术专家,面试官
展开
-
Java 中如何将 String 转换为 enum
Java 必知必会 第 56 篇lookup enum by string valueJava 中如何将 String 转换为 enum问题enum 类public enum Blah { A, B, C, D}如何根据枚举类型的值(比如 “A” ) 得到 Blah.A?A1是的, Blah.valueOf("A") 将会给你 Blah.A.静态方法 valueof...原创 2019-11-13 21:12:39 · 7225 阅读 · 0 评论 -
Java += 操作符实质
Java 必知必会 第 55 篇java operatorJava += 操作符实质问题我之前以为:i += j 等同于 i = i + j;但假设有:int i = 5;long j = 8;这时 i = i + j 不能编译,但 i += j 却可以编译。这说明两者还是有差别的这是否意味着,i += j,实际是等同于 i= (type of i) (i + j)呢?回答...原创 2019-11-13 21:11:28 · 137 阅读 · 0 评论 -
Java内部类和嵌套静态类区别
Java 必知必会 第 54 篇java inner class and static nested classJava内部类和嵌套静态类问题Java 当中的内部类和静态嵌套类有什么主要区别? 在这两者中有什么设计或者实现么?回答嵌套类分为两类: 静态和非静态. 用static装饰的嵌套类叫做静态类, 非静态的嵌套类叫做内部类.静态嵌套类使用外围类名来访问:OuterClass.S...原创 2019-11-13 21:09:33 · 195 阅读 · 0 评论 -
java遍历集合时移除元素,怎样避免ConcurrentModificationException异常抛出
Java 必知必会 第 53 篇遍历集合时移除元素,怎样避免ConcurrentModificationException异常抛出问题:在遍历集合的过程中,不会总出现ConcurrentModificationException异常的抛出,但是在下面的代码块中:public static void main(String[] args) { Collection<Intege...原创 2019-11-13 21:02:10 · 502 阅读 · 0 评论 -
java对HashMap遍历方法
Java 必知必会 第 52 篇iterate through a hashmapHashMap遍历在Java中有多种遍历HashMap的方法。让我们回顾一下最常见的方法和它们各自的优缺点。由于所有的Map都实现了Map接口,所以接下来方法适用于所有Map(如:HaspMap,TreeMap,LinkedMap,HashTable,etc)方法#1 使用For-Each迭代entries...原创 2019-11-13 21:01:04 · 236 阅读 · 0 评论 -
如何获取Android设备唯一ID
Java 必知必会 第 51 篇is there a unique android device id如何获取Android设备唯一ID?问题每一个android设备都有唯一ID吗?如果有?怎么用java最简单取得呢?回答1(最佳)如何取得android唯一码?好处:1.不需要特定权限.2.在99.5% Android装置(包括root过的)上,即API => 9,保证唯...原创 2019-11-13 20:58:41 · 776 阅读 · 0 评论 -
java在调用 instanceof 前需要进行null检查吗
Java 必知必会 第 50 篇is null check needed before calling instanceof在调用 instanceof 前需要进行null检查吗问题:null instanceof SomeClass 会返回 null 还是抛出 NullPointerException 异常答案一在调用 instanceof 前不要进行null检查null inst...原创 2019-11-13 20:55:09 · 8014 阅读 · 0 评论 -
java如何用一行代码初始化一个ArrayList
Java 必知必会 第 49 篇initialization of an arraylist in one line如何用一行代码初始化一个ArrayList###问题为了测试,我需要临时快速创建一个list。一开始我这样做:ArrayList<String> places = new ArrayList<String>();places.add("Buenos...原创 2019-11-13 20:53:43 · 290 阅读 · 0 评论 -
Java修饰符:public,protected,private,不加修饰符。有什么区别呢?
Java 必知必会 第 48 篇in java whats the difference between public default protected and privateJava修饰符:public,protected,private,不加修饰符。有什么区别呢?如下表所示,Y表示能访问(可见性),N表示不能访问,例如第一行的第3个Y,表示类的变量/方法如果是用public修饰,它的子...原创 2019-11-13 20:52:20 · 977 阅读 · 0 评论 -
java 实现Runnable接口 VS. 继承Thread类
Java 必知必会 第 47 篇implements-runnable-vs-extends-thread实现Runnable接口 VS. 继承Thread类 ?在Java中,并发执行任务一般有两种方式:(1)实现Runnable接口(2)继承Thread类一般而言,推荐使用方式(1),主要是由于大多数情况下,人们并不会特别去关注线程的行为,也不会去改写Thread已有的行为或方法...原创 2019-11-13 09:57:06 · 272 阅读 · 0 评论 -
java如何测试 private 方法,变量或者内部类
Java 必知必会 第 46 篇how to test a class that has private methods fields or inner classes如何测试 private 方法,变量或者内部类当你需要测试一个遗留的应用程序,且不能更改方法的可见性时,那么,测试私有方法/属性的最好方式就是使用反射。实际测试时,可以通过一些反射辅助类,设置和获取私有(静态)的变量、调用私...原创 2019-11-13 09:45:08 · 648 阅读 · 0 评论 -
java如何分割(split)string字符串
Java 必知必会 第 45 篇how to split a string in java如何分割(split)string字符串使用String#split()方法如下所示:String string = "004-034556";String[] parts = string.split("-");String part1 = parts[0]; // 004String pa...原创 2019-11-13 09:43:35 · 731 阅读 · 0 评论 -
java 中 Map Key,Value 基于Value值排序
Java 必知必会 第 44 篇how to sort a mapkey value on the values in javajava 中Map<Key,Value>基于Value值排序方法1:使用TreeMap,可以参考下面的代码public class Testing { public static void main(String[] args) {...原创 2019-11-08 10:36:04 · 229 阅读 · 1 评论 -
java怎样得到指定名称的枚举类型对应的的字符串类型的枚举常量
Java 必知必会 第 43 篇how to get an enum value from a string value in javajava怎样得到指定名称的枚举类型对应的的字符串类型的枚举常量问题:假如说我有一个如下的枚举类 public enum Blah { A, B, C, D }而我想要找出具有指定名称的枚举类型对应的的字符串类型的枚举常量,打个比...原创 2019-11-08 09:47:00 · 1215 阅读 · 0 评论 -
java如何产生一个随机的字母数字串作为 session 的唯一标识符
Java 必知必会 第 42 篇how to generate a random alpha numeric string如何产生一个随机的字母数字串作为 session 的唯一标识符?如果允许产生的随机字符串是可猜测的(随机字符串比较都短,或者使用有缺陷的随机数生成器),进而导致攻击者可能会劫持到会话的,可以使用一个相对简单随机数生成代码,如下所示:public class Random...原创 2019-11-08 09:42:31 · 965 阅读 · 0 评论 -
在java中如何创建一个泛型数组2
Java 必知必会 第 41 篇如何创建一个java泛型数组问题:由于Java泛型的实现机制,你不能这样写代码:pulic class GenSet{private E a[];public GetSet(){a=new E[INITIAL_ARRAY_LENGTH]; //error:generic array creation}}在保证类型安全的情况下,我该如何实现创建一个...原创 2019-11-08 09:41:04 · 337 阅读 · 0 评论 -
在java中如何创建泛型数组
Java 必知必会 第 40 篇how to create a generic array in java如何创建泛型java数组问题数组是不能通过泛型创建的,因为我们不能创建不可具体化的类型的数组。如下面的代码:public class GenSet<E> { private E a[]; public GenSet() { a = new...原创 2019-11-08 09:37:30 · 892 阅读 · 0 评论 -
用java怎么创建一个文件并向该文件写文本内容
Java 必知必会 第 39 篇how to create a file and write to a file in java用java怎么创建一个文件并向该文件写文本内容问:在java里最简单的创建文件写文件的方法是什么最佳答案:创建一个文本文件(注意:如果该文件存在,则会覆盖该文件)PrintWriter writer = new PrintWriter("the-file-na...原创 2019-11-08 09:36:04 · 412 阅读 · 0 评论 -
java如何便捷地将两个数组合到一起
Java 必知必会 第 38 篇how to concatenate two arrays in java如何便捷地将两个数组合到一起一行代码搞定Apache Commons Lang library ArrayUtils.addAll(T[], T...)就是专门干这事的代码:String[] both = ArrayUtils.addAll(first, second);###...原创 2019-11-08 09:32:41 · 254 阅读 · 0 评论 -
如何避免在JSP文件中使用Java代码
Java 必知必会 第 37 篇how to avoid java code in jsp files如何避免在JSP文件中使用Java代码问题如何避免在JSP文件中使用Java代码?我对Java EE不是很熟悉,我知道类似如下的三行代码<%= x+1 %><%= request.getParameter("name") %><%! counter++...原创 2019-11-08 09:30:56 · 304 阅读 · 0 评论 -
Java的foreach循环是如何工作的
Java 必知必会 第 36 篇how does the java for each loop workJava的foreach循环是如何工作的?问题List<String> someList = new ArrayList<String>();// add "monkey", "donkey", "skeleton key" to someListfor (S...原创 2019-11-08 09:28:07 · 162 阅读 · 1 评论 -
JUnit4如何断言确定异常的抛出
Java 必知必会 第 35 篇how do you assert that a certain exception is thrown in junit-4 tests问题在JUnit4单元测试中,我要怎样做才能测试出有特定的异常抛出?我能想到的就只有下面的方法:@Testpublic void testFooThrowsIndexOutOfBoundsException() { ...原创 2019-11-05 10:39:00 · 8415 阅读 · 0 评论 -
java中servlets是如何工作的?
Java 必知必会 第 34 篇How do servlets work? Instantiation, shared variables and multithreading问题:假设,我有一个web服务器可以支持无数的servlets,对于通过这些servlets的信息,我正在获取这些servlets的上下文环境,并设置session变量。现在,如果有两个或者更多的user用户发送请求...原创 2019-11-05 10:36:59 · 199 阅读 · 0 评论 -
java如何从文件里读取字符串
Java 必知必会 第 33 篇how-do-i-create-a-java-string-from-the-contents-of-a-file如何从文件里读取字符串从文件里读取所有文本:代码:static String readFile(String path, Charset encoding) throws IOException { byte[] encoded =...原创 2019-11-01 15:29:25 · 1408 阅读 · 0 评论 -
如何对Java class文件进行反编译
Java 必知必会 第 32 篇how-do-i-decompile-java-class-files如何对Java class文件进行反编译可以用什么程序来编译class文件 会得到java代码还是JVM编译的代码?在这个网站上性能讨论的问题上经常看到进行反编译文件来看编译器如何优化一些东西“反编译”的艺术也可以被认为是逆向工程。虽然有时在逆向工程时你并不总是能够访问二进制文件。没人...原创 2019-11-01 15:20:07 · 768 阅读 · 0 评论 -
在java中如何对比(compare)string
Java 必知必会 第 31 篇how-do-i-compare-strings-in-java在java中如何对比(compare)string==对应的是指针相等,也就是他们是否为同一个对象.equals()对应的是值相等,也就是逻辑相等因此,如果你想检查两个字符串是否为相同值,那么应该用.equals()方法//值是相等的new String("test").equals(...原创 2019-11-01 15:19:02 · 475 阅读 · 0 评论 -
java能否在一个构造器中调用另一个构造器
Java 必知必会 第 30 篇how-do-i-call-one-constructor-from-another-in-java能否在一个构造器中调用另一个构造器问题能否在一个构造器中调用另一个构造器(在同一个类中,不是子类)?如果可以,怎么做?调用另一个构造器的最好方法是什么(如果有几种方法可以选择的话)?回答可以这样做:public class Foo{ priv...原创 2019-11-01 15:17:53 · 698 阅读 · 0 评论 -
java如何测试一个数组是否包含指定的值
Java 必知必会 第 29 篇how-can-i-test-if-an-array-contains-a-certain-valuejava如何测试一个数组是否包含指定的值指定数组,如:public static final String[] VALUES = new String[] {"AB","BC","CD","AE"};现在制定一个值 s,有哪些比较好的方式,判断这个数组 ...原创 2019-11-01 15:15:50 · 207 阅读 · 0 评论 -
如何让IntelliJ编辑器永久性显示代码行数
Java 必知必会 第 28 篇how-can-i-permanently-have-line-numbers-in-intellij如何让IntelliJ编辑器永久性显示代码行数问题如何让IntelliJ编辑器永久性显示代码行数回答IntelliJ 14.0之后的版本打开软件的菜单File->Settings->Editor->General->Appear...原创 2019-11-01 15:14:04 · 135 阅读 · 0 评论 -
java如何在整数左填充0
Java 必知必会 第 27 篇how-can-i-pad-an-integers-with-zeros-on-the-left如何在整数左填充0问题如何在整数左填充0举例 1 = “0001”答案一,String.formatString.format("%05d", yournumber);用0填充,总长度为5https://docs.oracle.com/javase/8...原创 2019-11-01 15:13:07 · 1827 阅读 · 0 评论 -
java初始化静态map
Java 必知必会 第 26 篇how-can-i-initialize-a-static-map初始化静态map问题怎么在Java中初始化一个静态的map我想到的两种方法如下,大家是否有更好的建议呢?方法一:static初始化器方法二:实例初始化(匿名子类)下面是描述上面两种方法的例子import java.util.HashMap;import java.util.Map;...原创 2019-11-01 15:12:02 · 9188 阅读 · 0 评论 -
Java如何计算MD5值
Java 必知必会 第 25 篇how-can-i-generate-an-md5-hash如何计算MD5值问题Java中有没有方法可以计算一个String的MD5值?回答你可以用 MessageDigest的MD5实例来计算String的MD5值。使用 MessageDigest和 String 时,一定要显式声明你的数据编码类型。如果你使用无参的 String.getBytes(...原创 2019-11-01 10:41:44 · 572 阅读 · 0 评论 -
如何使用maven把项目及其依赖打包为可运行jar包
Java 必知必会 第 24 篇how-can-i-create-an-executable-jar-with-dependencies-using-maven如何使用maven把项目及其依赖打包为可运行jar包问题我想把java项目打包为可运行的分布式jar包。我该怎样做,才能把项目中maven所依赖的jar包导入到我的项目jar包中?回答在pom.xml文件中,加入如下的插件:&...原创 2019-11-01 10:39:54 · 299 阅读 · 0 评论 -
java怎样将堆栈追踪信息转换为字符串
Java 必知必会 第 23 篇how-can-i-convert-a-stack-trace-to-a-string怎样将堆栈追踪信息转换为字符串问题将Throwable.getStackTrace()的结果转换为一个字符串来来描述堆栈信息的最简单的方法是什么最佳答案可以用下面的方法将异常堆栈信息转换为字符串类型。该类在Apache commons-lang-2.2.jar中可以找到...原创 2019-11-01 10:37:21 · 1003 阅读 · 0 评论 -
java获取完整的堆栈信息
Java 必知必会 第 22 篇get-current-stack-trace-in-java获取完整的堆栈信息问题捕获了异常后,如何获取完整的堆栈轨迹(stack trace)回答String fullStackTrace = org.apache.commons.lang.exception.ExceptionUtils.getFullStackTrace(e)Thread.c...原创 2019-11-01 10:35:54 · 1766 阅读 · 0 评论 -
java 产生指定范围的随机数
Java 必知必会 第 21 篇generating-random-integers-in-a-range-with-Javajava 产生指定范围的随机数问题,如何使用 java 产生 010,510 之间的随机数?Math.random()Math.random() 可以产生一个 大于等于 0 且 小于 1 的双精度伪随机数,假设需要产生 ”0《= 随机数 <=10” 的随机数...原创 2019-11-01 10:31:42 · 399 阅读 · 0 评论 -
加载JNI共享库失败(JDK)
Java 必知必会 第 20 篇加载JNI共享库失败(JDK)问题:当我试图打开Eclipse时,会弹出一个提示写着:Failed to load the JNI shared library “C:/JDK/bin/client/jvm.dll”`.然后,Eclipse会强制关闭。我做了以下几点:·我检查那个路径有没有存在什么,真的有存在。·我的Eclipse和Java SE D...原创 2019-11-01 10:30:51 · 1869 阅读 · 0 评论 -
Java 源码里的设计模式
Java 必知必会 第 19 篇examples-of-gof-design-patterns-in-javas-core-librariesJava 源码里的设计模式从 维基百科 中,可以让你对大部分设计模式有一个概览,而且它也指出了哪些设计模式是 GoF 中规范.下面列出可以从 JavaSE 和 JavaEE API 中找到的设计模式:创建型模式抽象工厂javax.xml.par...原创 2019-11-01 10:27:18 · 195 阅读 · 0 评论 -
java中"Double Brace Initialization"的效率问题
Java 必知必会 第 18 篇efficiency-of-java-double-brace-initialization"Double Brace Initialization"的效率问题问题Double Brace Initialization是java的隐藏特性,它有着如下诱人的语法:Set<String> flavors = new HashSet<Strin...原创 2019-11-01 10:25:22 · 369 阅读 · 0 评论 -
Eclipse如何为自动代码调整设置最大的行数?
Eclipse set maximun line length for auto formatting为自动代码调整设置最大的行数?问题:我正在学习Java。如果我在Eclipse Helios里使用ctrl+shift+f的组合键,它会自动调整我的代码。一定程度下,它会改变行数。我想增加行数的最大值。应该怎么做?回答:在偏好设置里,分别点击Java->Code Style->...原创 2019-11-01 10:23:27 · 574 阅读 · 0 评论