Java教程

Java 字符串字符-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java 字符串字符

Java数据类型教程 – Java字符串字符 索引字符 您可以使用charAt()方法从String对象中获取特定索引处的字符。索引从零开始。 下面的代码打印索引值和字符在“W3CSCHOOL.CN”字符串中的每个索引处: public class Main { public static void main(String[] args) { String str = "W3CSCHOOL.CN"; // Get the length of string int len = str.length(); // Loop through all characters and print their indexes for (int i = 0; i < len; i++) { System.out.println(str.charAt(i) + " has index " + i); } } } 上面的代码生成以下结果。 测试字符串是否为空 测试String对象是否为空。空字符串的长度为零。 有三种方法可以检查空字符串: isEmpty()方法。 equals()方法。 获取字符串的长度,并检查它是否为零。 以下代码显示如何使用三种方法: public class Main { public static void main(String[] args) { String str1 = "Hello"; String str2 = ""; // Using the isEmpty() method boolean empty1 = str1.isEmpty(); // Assigns false to empty1 boolean empty2 = str2.isEmpty(); // Assigns true to empty1 // Using the equals() method boolean empty3 = "".equals(str1); // Assigns...

Java 字符串比较-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java 字符串比较

Java数据类型教程 – Java字符串比较 String类覆盖了Object类的equals()方法,并提供了自己的实现,它根据它们的内容比较两个字符串的相等性。 等于 例如,我们可以比较两个字符串的相等性,如下所示: String str1 = new String("Hello"); String str2 = new String("Hi"); String str3 = new String("Hello"); boolean b1, b2; b1 = str1.equals(str2); // false will be assigned to b1 b2 = str1.equals(str3); // true will be assigned to b2 我们还可以将字符串字面量与字符串字面量或字符串对象进行比较,如下所示: b1 = str1.equals("Hello"); // true will be assigned to b1 b2 = "Hello".equals(str1); // true will be assigned to b2 b1 = "Hello".equals("Hi"); // false will be assigned to b1 ==操作符总是比较内存中两个对象的引用。 str1 == str2和str1 == str3将返回false,因为str1,str2和str3是内存中三个不同String对象的引用。 比较 要根据字符的Unicode值比较两个字符串,请使用compareTo()方法。它的签名是 public int compareTo(String anotherString) 它返回一个整数,它可以是0(零),正整数或负整数。 该方法返回这两个字符的Unicode值之间的差异。 例如,“a”.compareTo(“b”)将返回-1。 a的Unicode值为97,b为98。它返回差值97 – 98,它是-1。 以下是字符串比较的示例: "abc".compareTo("abc") will return 0 "abc".compareTo("xyz") will return -23 (value of "a" - "x") "xyz".compareTo("abc") will return 23 (value of "x" - "a") 以下代码显示如何进行字符串比较。 public class Main...

Java 继承隐藏-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java 继承隐藏

Java面向对象的设计 – Java继承隐藏 方法隐藏 类从其超类继承所有非私有静态方法。 重定义类中继承的静态方法称为方法隐藏。 子类中的重定义静态方法隐藏其超类的静态方法。 在类中重定义非静态方法称为方法覆盖。 关于方法隐藏的重定义方法(名称,访问级别,返回类型和异常)的所有规则与方法覆盖相同。 class MySuper { public static void print() { System.out.println("Inside MySuper.print()"); } } class MySubclass extends MySuper { public static void print() { System.out.println("Inside MySubclass.print()"); } } public class Main { public static void main(String[] args) { MySuper mhSuper = new MySub(); MySubclass mhSub = new MySubclass(); MySuper.print(); MySubclass.print(); ((MySuper) mhSub).print(); mhSuper = mhSub; mhSuper.print(); ((MySubclass) mhSuper).print(); } } 上面的代码生成以下结果。 字段隐藏 类中的字段声明(静态或非静态)在其父类中隐藏具有相同名称的继承字段。 在字段隐藏的情况下,不考虑字段的类型及其访问级别。 字段隐藏仅基于字段名称。 class MySuper { protected int num = 100; protected String name = "Tom"; } class MySub extends MySuper { public void print() { System.out.println("num: " + num); System.out.println("name: " + name); } } class MySub2 extends MySuper { // Hides num field in MySuper class private int num...

Java 工厂模式-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java 工厂模式

Java设计模式 – 工厂模式 工厂模式是一种创建模式,因为此模式提供了更好的方法来创建对象。 在工厂模式中,我们创建对象而不将创建逻辑暴露给客户端。 例子 在以下部分中,我们将展示如何使用工厂模式创建对象。 由工厂模式创建的对象将是形状对象,如圆形,矩形。 首先,我们设计一个接口来表示Shape。 public interface Shape { void draw(); } 然后我们创建实现接口的具体类。 以下代码用于Rectangle.java public class Rectangle implements Shape { @Override public void draw() { System.out.println("Inside Rectangle::draw() method."); } } Square.java public class Square implements Shape { @Override public void draw() { System.out.println("Inside Square::draw() method."); } } Circle.java public class Circle implements Shape { @Override public void draw() { System.out.println("Inside Circle::draw() method."); } } 核心工厂模式是一个Factory类。以下代码显示了如何为Shape对象创建Factory类。 ShapeFactory类基于传递给getShape()方法的String值创建Shape对象。如果String值为CIRCLE,它将创建一个Circle对象。 public class ShapeFactory { //use getShape method to get object of type shape public Shape getShape(String shapeType){ if(shapeType == null){ return null; } if(shapeType.equalsIgnoreCase("CIRCLE")){ return new Circle(); } else if(shapeType.equalsIgnoreCase("RECTANGLE")){ return new Rectangle(); } else if(shapeType.equalsIgnoreCase("SQUARE")){ return new Square(); } return null; } } 以下代码具有main方法,并且它使用Factory类通过传递类型等信息来获取具体类的对象。 public class Main { public...

Java lastIndexOf() 方法-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java lastIndexOf() 方法

Java lastIndexOf() 方法 Java String类 lastIndexOf() 方法有以下四种形式: public int lastIndexOf(int ch): 返回指定字符在此字符串中最后一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。 public int lastIndexOf(int ch, int fromIndex): 返返回指定字符在此字符串中最后一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。 public int lastIndexOf(String str): 返回指定字符在此字符串中最后一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。 public int lastIndexOf(String str, int fromIndex): 返回指定字符在此字符串中最后一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。 语法 public int lastIndexOf(int ch) 或 public int lastIndexOf(int ch, int fromIndex) 或 public int lastIndexOf(String str) 或 public int lastIndexOf(String str, int fromIndex) 参数 ch — 字符。 fromIndex — 开始搜索的索引位置。 str — 要搜索的子字符串。 返回值 指定子字符串在字符串中第一次出现处的索引值。 实例 public class Test { public static void main(String args[]) { String Str = new String("W3Cschool教程:www.w3cschool.cn"); String SubStr1 = new String("youj"); String SubStr2 = new String("com"); System.out.print("查找字符 o 最后出现的位置 :" ); System.out.println(Str.lastIndexOf( 'o' )); System.out.print("从第14个位置查找字符 o 最后出现的位置 :" ); System.out.println(Str.lastIndexOf( 'o', 14 )); System.out.print("子字符串 SubStr1 最后出现的位置:" ); System.out.println( Str.lastIndexOf(...

Java 流操作-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java 流操作

Java流 – Java流操作 外部迭代 当使用Java集合时,我们使用外部迭代。 在外部迭代中,我们为每个循环使用for或,或者为序列中的集合的集合和过程元素获取迭代器。 以下代码计算列表中所有奇整数的平方和。 它使用每个循环访问列表中的每一个元素,然后使用if语句来过滤奇整数。 之后,它计算平方,最后存储平方和与和变量。 import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); int sum = 0; for (int n : numbers) { if (n % 2 == 1) { int square = n * n; sum = sum + square; } } System.out.println(sum); } } 上面的代码生成以下结果。 内部迭代 我们可以使用stream重写上面的代码。 它做的完全一样。 import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); int sum = numbers.stream() .filter(n -> n % 2 == 1) .map(n -> n * n) .reduce(0, Integer::sum); System.out.println(sum); } } 在上面的代码中,我们没有使用循环语句来遍历List。 我们通过流在内部执行循环。 对于奇整数计算,我们使用lambda表达式。 我们首先做了过滤,然后映射然后减少。 上面的代码生成以下结果。 顺序 外部迭代通常意味着顺序代码。顺序代码只能由一个线程执行。 流被设计为并行处理元素。 以下代码并行计算列表中奇整数的平方和。...

Java 修饰符

Java 语言提供了很多修饰符,主要分为以下两类: 访问修饰符 非访问修饰符 修饰符用来定义类、方法或者变量,通常放在语句的最前端。我们通过下面的例子来说明: public class className { // ... } private boolean myFlag; static final double weeks = 9.5; protected static final int BOXWIDTH = 42; public static void main(String[] arguments) { // 方法体 } 访问控制修饰符 Java 中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持4种不同的访问权限。 默认的,也称为 default,在同一包内可见,不使用任何修饰符。 私有的,以 private 修饰符指定,在同一类内可见。 公有的,以 public 修饰符指定,对所有类可见。 受保护的,以 protected 修饰符指定,对同一包内的类和所有子类可见。 默认访问修饰符-不使用任何关键字 使用默认访问修饰符声明的变量和方法,对同一个包内的类是可见的。接口里的变量都隐式声明为​public static final​,而接口里的方法默认情况下访问权限为 ​public​。 实例: 如下例所示,变量和方法的声明可以不使用任何修饰符。 String version = "1.5.1"; boolean processOrder() { return true; } 私有访问修饰符-private 私有访问修饰符是最严格的访问级别,所以被声明为 private 的方法、变量和构造方法只能被所属类访问,并且类和接口不能声明为 private。 声明为私有访问类型的变量只能通过类中公共的 getter 方法被外部类访问。 Private 访问修饰符的使用主要用来隐藏类的实现细节和保护类的数据。 下面的类使用了私有访问修饰符: public class Logger { private String format; public String getFormat() { return this.format; } public void setFormat(String format) { this.format = format; } } 实例中,Logger 类中的 format 变量为私有变量,所以其他类不能直接得到和设置该变量的值。为了使其他类能够操作该变量,定义了两个​public​方法:​getFormat() ​(返回format的值)和​setFormat(String)​(设置format的值) 公有访问修饰符-public 被声明为 public 的类、方法、构造方法和接口能够被任何其他类访问。 如果几个相互访问的 public 类分布在不同的包中,则需要导入相应 public 类所在的包。由于类的继承性,类所有的公有方法和变量都能被其子类继承。 以下函数使用了公有访问控制: public...

Java copyValueOf() 方法-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java copyValueOf() 方法

Java copyValueOf() 方法 Java String类 copyValueOf() 方法有两种形式: public static String copyValueOf(char[] data): 返回指定数组中表示该字符序列的字符串。 public static String copyValueOf(char[] data, int offset, int count): 返回指定数组中表示该字符序列的 字符串。 语法 public static String copyValueOf(char[] data) 或 public static String copyValueOf(char[] data, int offset, int count) 参数 data — 字符数组。 offset — 子数组的初始偏移量。。 count — 子数组的长度。 返回值 如字符串与指定 StringBuffer 表示相同的字符序列,则返回 true;否则返回 false。 实例 public class Test { public static void main(String args[]) { char[] Str1 = {'h', 'e', 'l', 'l', 'o', ' ', 'w', '3', 'c', 's', 'c', 'h' , 'o' , 'o' , 'l'}; String Str2 = ""; Str2 = Str2.copyValueOf( Str1 ); System.out.println("返回结果:" + Str2); Str2 = Str2.copyValueOf( Str1, 2, 6 ); System.out.println("返回结果:" + Str2); } } 以上程序执行结果为: 返回结果:hello w3cschool 返回结果:llo w3 Java String类

Java 实例 – 集合遍历-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java 实例 – 集合遍历

Java 实例 以下实例演示了如何遍历从Collection接口延伸出的List、Set和以键值对形式作存储的Map类型的集合,以下我们分别使用了普通for,增强型的 for ,iterator 等方式来遍历集合: List与Set类型集合的遍历 /* author by w3cschool.cn Main.java */ import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; public class Main { public static void main(String[] args) { // List集合的遍历 listTest(); // Set集合的遍历 setTest(); } private static void setTest() { Set<String> set = new HashSet<String>(); set.add("JAVA"); set.add("C"); set.add("C++"); // 重复数据添加失败 set.add("JAVA"); set.add("JAVASCRIPT"); // 使用iterator遍历set集合 Iterator<String> it = set.iterator(); while (it.hasNext()) { String value = it.next(); System.out.println(value); } // 使用增强for循环遍历set集合 for(String s: set){ System.out.println(s); } } // 遍历list集合 private static void listTest() { List<String> list = new ArrayList<String>(); list.add("编"); list.add("程"); list.add("狮"); list.add("www.w3cschool.cn"); // 使用iterator遍历 Iterator<String> it = list.iterator(); while (it.hasNext()) { String value = it.next(); System.out.println(value); } // 使用传统for循环进行遍历 for (int i = 0, size =...

Java 正则表达式元字符-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java 正则表达式元字符

Java正则表达式教程 – Java正则表达式元字符 元字符是在Java正则表达式中具有特殊含义的字符。 Java中的正则表达式支持的元字符如下: ( ) [ ] { } \ ^ $ | ? * + . < > - = ! 字符类 元字符 [和] 指定正则表达式中的字符类。 字符类是一组字符。正则表达式引擎将尝试匹配集合中的一个字符。 字符类“[ABC]”将匹配字符A,B或C.例如,字符串“woman”或“women”将匹配正则表达式“wom [ae] n”。 我们可以使用字符类指定一个字符范围。 范围使用连字符 - 字符表示。 例如, [A-Z] 表示任何大写英文字母;“[0-9]”表示0和9之间的任何数字。 ^ 表示不是。 例如, [^ ABC] 表示除A,B和C以外的任何字符。 字符类 [^ A-Z] 表示除大写字母之外的任何字符。 如果 ^ 出现在字符类中,除了开头,它只匹配一个 ^ 字符。 例如,“[ABC ^]”将匹配A,B,C或^。 您还可以在一个字符类中包含两个或多个范围。例如, [a-zA-Z] 匹配任何字符a到z和A到Z. [a-zA-Z0-9] 匹配任何字符a到z(大写和小写)和任何数字0到9。 下表列出了字符类的示例 字符a到z 字符类 含义 [abc] 字符a,b或c [^xyz] 除x,y和z以外的字符 [a-z]   [a-cx-z] 字符a到c或x到z,其将包括a,b,c,x,y或z。 [0-9&&[4-8]] 两个范围(4,5,6,7或8)的交叉, [a-z&&[^aeiou]] 所有小写字母减元音         预定义字符类 下表列出了一些常用的预定义字符类。 预定义 字符 类   含义 . 任何字符 \d 数字。 与[0-9]相同 \D 非数字。 与[^ 0-9]相同 \s 空格字符。 包括与[\\ t \\ n \\ x0B \\ f \\ r]相同。 空格 标签 换行符 垂直标签 表单Feed 回车字符 \S 非空白字符。 与[^ \\ s]相同...