找到 4330 篇文章 关于 Java 8
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 + " 是素数: " + Helper.isPrime(a)); System.out.println(b + " 是素数: " + 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 的操作(add、update、set 方法)会创建底层数组的克隆。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("动物可以移动"); } } class Dog extends Animal { public void move() { System.out.println("狗可以行走和奔跑"); } } 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 ... 阅读更多