找到关于 Java 8 的4330 篇文章
590 次浏览
x++ 自动处理类型转换,而 x = x + 1 在 x 不是 int 变量的情况下需要类型转换。请参见下面的示例。示例 在线演示public class Tester { public static void main(String args[]) { byte b = 2; //需要类型转换 //因为 1 是 int 类型,而 b 是 byte 变量 b = (byte) (b + 1); System.out.println(b); byte b1 = 2; //编译器隐式类型转换 b1++; System.out.println(b1); } }输出3 3
555 次浏览
HashMap、TreeMap 和 LinkedHashMap 都实现了 java.util.Map 接口,以下是它们的特性。HashMapHashMap 的插入和查找复杂度为 O(1)。HashMap 允许一个 null 键和多个 null 值。HashMap 不维护任何顺序。TreeMapTreeMap 的插入和查找复杂度为 O(logN)。TreeMap 不允许 null 键,但允许多个 null 值。TreeMap 维护顺序。它按升序存储键。LinkedHashMapLinkedHashMap 的插入和查找复杂度为 O(1)。LinkedHashMap 允许一个 null 键和多个 null 值。LinkedHashMap 维护键值对插入的顺序。示例 在线演示import java.util.HashMap; import java.util.Hashtable; import java.util.LinkedHashMap; import java.util.Map; import java.util.TreeMap; public class Tester { ... 阅读更多
4K+ 次浏览
辅助类具有以下用途。提供项目中多个类需要的常用方法。辅助方法通常是公共的和静态的,以便可以独立调用它们。辅助类的每个方法都应独立于同一类的其他方法工作。以下示例展示了一个这样的辅助类。示例public class Tester { public static void main(String[] args) { int a = 37; int b = 39; System.out.println(a + " is prime: " + Helper.isPrime(a)); System.out.println(b + " is prime: " + Helper.isPrime(b)); } } ... 阅读更多
265 次浏览
不可变类的对象属性在初始化后不能修改。例如,String 是 Java 中的一个不可变类。我们可以通过遵循以下规则来创建一个不可变类。将类设为 final - 类应该是 final 的,这样就不能扩展它。将每个字段设为 final - 每个字段都应该是 final 的,这样在初始化后就不能修改它们。为每个字段创建 getter 方法。- 为每个字段创建一个公共 getter 方法。字段应该是私有的。没有每个字段的 setter 方法。- 不要为任何字段创建公共 setter 方法。创建一个参数化构造函数 ... 阅读更多
2K+ 次浏览
为了找到两个 Java 字符串中匹配字符的数量,首先要创建这两个字符串的字符数组,这使得比较变得简单。然后将每个唯一字符放入哈希映射中。将另一个字符串的每个字符与创建的哈希映射进行比较,查看它是否存在,如果存在,则将该字符放入另一个哈希映射中,这是为了防止重复。最后,获取这个新创建的目标哈希映射的大小,它等于两个给定字符串中匹配字符的数量。示例 在线演示import java.util.HashMap; public class ... 阅读更多
193 次浏览
类声明public class CopyOnWriteArrayList extends Object implements List, RandomAccess, Cloneable, SerializableCopyOnWriteArrayList 是 Arraylist 的线程安全变体,其中可以更改 arraylist 的操作(添加、更新、设置方法)会创建一个底层数组的克隆。CopyOnWriteArrayList 用于线程环境中,在该环境中读取操作非常频繁,而更新操作很少。CopyOnWriteArrayList 的迭代器永远不会抛出 ConcurrentModificationException。对 CopyOnWriteArrayList 的任何类型的修改都不会在迭代期间反映出来,因为迭代器已创建。在迭代中不支持 List 修改方法,如 remove、set 和 add。这些方法将抛出 UnsupportedOperationException。可以将 null 添加到列表中。CopyOnWriteArrayList 方法以下是 ... 阅读更多
315 次浏览
我们可以使用以下方法在 Java 中按字典顺序比较两个字符串。使用 String.compareTo(String) 方法。它以区分大小写的方式进行比较。使用 String.compareToIgnoreCase(String) 方法。它以不区分大小写的方式进行比较。使用 String.compareTo(Object) 方法。它以区分大小写的方式进行比较。这些方法返回比较字符串的第一个奇数字符的 ASCII 差值。示例 在线演示public class Tester { public static void main(String args[]) { String str = "Hello World"; String anotherString = "hello world"; Object objStr = str; System.out.println( str.compareTo(anotherString) ); System.out.println( str.compareToIgnoreCase(anotherString) ); System.out.println( str.compareTo(objStr.toString())); } }输出-32 0 0
1K+ 次浏览
测试重写的优点是可以定义特定于子类类型的行为,这意味着子类可以根据其需求实现父类方法。在面向对象的术语中,重写意味着重写现有方法的功能。示例 在线演示class Animal { public void move() { System.out.println("Animals can move"); } } class Dog extends Animal { public void move() { System.out.println("Dogs can walk and run"); } } public class TestDog { public static void main(String args[]) { Animal a = new Animal(); // ... 阅读更多
258 次浏览
方法重载是一种静态多态性。在方法重载中,我们可以定义多个名称相同但参数不同的方法。考虑以下示例程序。示例 在线演示public class Tester { public static void main(String args[]) { Tester tester = new Tester(); System.out.println(tester.add(1, 2)); System.out.println(tester.add(1, 2, 3)); } public int add(int a, int b) { return a + b; } public int add(int a, int b, int c) { return a + b + c; } }输出3 ... 阅读更多
2K+ 次浏览
在序列化中引入继承时,基于超类和子类,定义了某些情况,这使得在每种情况下理解序列化更加简单。应该遵循的基本规则如下:1. 当超类实现 Serializable 接口而子类不实现时。在这种情况下,即使子类不实现 Serializable 接口,子类的对象在超类序列化时也会默认被序列化。示例public class TestSerialization { public static void main(String[] args) throws IOException, ClassNotFoundException { B obj = new B(); FileOutputStream fos = new ... 阅读更多