Java教程 第73页

Java 泛型类扩展-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java 泛型类扩展

Java教程 – 如何扩展Java泛型类 泛型类可以充当超类或者作为子类。在泛型层次结构中,需要任何类型参数由泛型超类必须由所有子类向上传递到层次结构。 例子 使用泛型超类 class MyClass<T> { T ob; MyClass(T o) { ob = o; } T getob() { return ob; } } class MySubclass<T, V> extends MyClass<T> { V ob2; MySubclass(T o, V o2) { super(o); ob2 = o2; } V getob2() { return ob2; } } public class Main { public static void main(String args[]) { MySubclass<String, Integer> x = new MySubclass<String, Integer>("Value is: ", 99); System.out.print(x.getob()); System.out.println(x.getob2()); } } 上面的代码生成以下结果。 例2 非类属类是类属子类的超类是完全可以接受的。 class MyClass { int num; MyClass(int i) { num = i; } int getnum() { return num; } } class MySubclass<T> extends MyClass { T ob; MySubclass(T o, int i) { super(i); ob = o; } T getob() { return ob; } }...

Java 泛型接口-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java 泛型接口

Java教程 – 如何使用Java泛型接口 在Java中,我们创建泛型接口。 语法 这是一个泛型接口的泛型语法: interface interface-name<type-param-list> { // ... type-param-list是逗号分隔的类型参数列表。当实现泛型接口时,必须指定类型参数,如下所示: class class-name<type-param-list> implements interface-name<type-arg-list> { 注意 一般来说,如果一个类实现了一个泛型接口,那么该类也必须是泛型的。如果一个类实现了一个特定类型的泛型接口,如下所示: class MyClass implements MinMax<Integer> { // OK 那么实现类不需要是泛型的。 泛型接口类似泛型类。 例子 interface MinMax<T extends Comparable<T>> { T max(); } class MyClass<T extends Comparable<T>> implements MinMax<T> { T[] vals; MyClass(T[] o) { vals = o; } public T max() { T v = vals[0]; for (int i = 1; i < vals.length; i++) { if (vals[i].compareTo(v) > 0) { v = vals[i]; } } return v; } } public class Main { public static void main(String args[]) { Integer inums[] = { 3, 6, 2, 8, 6 }; Character chs[] = { "b", "r", "p", "w" }; MyClass<Integer> a = new MyClass<Integer>(inums); MyClass<Character>...

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

Java 泛型方法

Java教程 – 如何在Java中创建泛型方法 可以创建一个包含在非泛型类中的通用方法。 public class Main { static <T, V extends T> boolean isIn(T x, V[] y) { for (int i = 0; i < y.length; i++) { if (x.equals(y[i])) { return true; } } return false; } public static void main(String args[]) { Integer nums[] = { 1, 2, 3, 4, 5 }; if (isIn(2, nums)){ System.out.println("2 is in nums"); } String strs[] = { "one", "two", "three", "four", "five" }; if (isIn("two", strs)){ System.out.println("two is in strs"); } } } 上面的代码生成以下结果。 例子 下面的代码声明一个 copyList()通用方法。 import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { List<String> ls = new ArrayList<String>(); ls.add("A"); ls.add("B"); ls.add("C"); List<String> lsCopy = new ArrayList<String>(); copyList(ls, lsCopy); List<Integer> lc = new...

Java 泛型类型-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java 泛型类型

Java教程 – 什么是Java中的泛型类型 术语泛型意味着参数化类型。使用泛型,可以创建与不同类型的数据一起使用的单个类。在参数化类型上操作的类,接口或方法称为通用。 语法 以下是声明通用类的语法: class className<type-param-list> {} 下面是声明对一个泛型类的引用的语法: 例子 简单泛型示例 // T is a type parameter that will be replaced by a real type // when an object of type Gen is created. class Gen<T> { T ob; // declare an object of type T Gen(T o) { ob = o; } // Return ob. T getob() { return ob; } // Show type of T. void showType() { System.out.println("Type of T is " + ob.getClass().getName()); } } public class Main { public static void main(String args[]) { Gen<Integer> iOb = new Gen<Integer>(88); iOb.showType(); int v = iOb.getob(); System.out.println("value: " + v); Gen<String> strOb = new Gen<String>("Generics Test"); strOb.showType(); String str = strOb.getob(); System.out.println("value: " + str); }...

Java 整数类型-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java 整数类型

Java教程 – Java整数类型 Java字节类型 最小的整数类型为 byte 。 byte 类型变量在使用来自网络或文件的数据流时非常有用。 字节变量通过使用byte关键字声明。下面声明两个字节变量b和c: byte b, c; byte 是有符号的8位类型,范围从-128到127。 以下代码创建两个字节类型变量并分配值。 public class Main { public static void main(String[] args) { byte b1 = 100; byte b2 = 20; System.out.println("Value of byte variable b1 is :" + b1); System.out.println("Value of byte variable b1 is :" + b2); } } 上面的代码生成以下结果。 字节类在对象中封装了原始类型字节的值。字节类提供了将字节转换为字符串和字符串转换为字节的几种方法 Java short类型 Java short类型的大小在字节和整数之间。 short是一个有符号的16位类型。短类型变量的范围为-32,768到32,767。 下面是一些简短变量声明的例子: short s; short t; Java int类型 当在表达式中使用字节和短型值时,在求值表达式时将它们提升为int。 int 是有符号的32位类型,范围为 -2,147,483,648 到 2,147,483,647 。 Java long类型 当int类型不够大时,使用Java long类型。 long是一个有符号的64位类型和。长型的范围是-9,223,372,036,854,775,808至9,223,372,036,854,775,807。 要指定一个长文字,你需要告诉编译器字面值的类型为 long ,通过在文本上附加一个大写或小写的 L 。例如, 0x7ffffffffffffffL 或 123123123123L 。 以下代码创建一个 long 类型文字,并将值分配给a long 类型变量。 public class Main { public static void main(String args[]) { long l = 0x7ffffffffffffffL; System.out.println("l is " + l); } } 此程序生成的输出如下所示: 例子 这里是一个使用long类型来存储结果的程序。 public class...

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

Java 关键字

Java教程 – Java关键字 Java中的关键字完整列表 关键词是其含义由编程语言定义的词。 Java关键字和保留字: abstract class extends implements null strictfp true assert const false import package super try boolean continue final instanceof private switch void break default finally int protected synchronized volatile byte do float interface public this while case double for long return throw catch else goto native short throws char enum if new static transient 标识符是程序员用来命名变量,方法,类或标签的单词。关键字和保留字不能用作标识符。标识符必须以字母,美元符号($)或下划线(_)开头;后续字符可以是字母,美元符号,下划线或数字。 一些例子是: foobar // legal Myclass // legal $a // legal 3_a // illegal: starts with a digit !theValue // illegal: bad 1st char Java标识符区分大小写。例如, myValue 和 MyValue 是不同的标识符。 使用标识符 标识符用于类名,方法名和变量名。标识符可以是大写和小写字母,数字或下划线和美元符号字符的任何序列。标识符不能以数字开头。Java标识符区分大小写。以下代码说明了有效标识符的一些示例: public class Main { public static void main(String[] argv) { int ATEST, count, i1, $Atest, this_is_a_test; } } 以下代码显示无效的变量名包括: public class Main { public static void main(String[] argv){ int 2count,...

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

Java 正则表达式组

Java正则表达式教程 – Java正则表达式组 我们可以通过括号将多个字符组合为一个单位。例如,(ab)。 正则表达式中的每个组都有一个组号,从1开始。 Matcher类中的方法groupCount()返回与Matcher实例相关联的模式中的组数。 组0引用整个正则表达式和不由groupCount()方法报告。 正则表达式中的每个左括号标记新组的开始。 我们可以在正则表达式中返回引用组号。 假设我们要匹配以“abc”开头,后跟“xyz”的文本,后跟“abc”。 我们可以写一个正则表达式为“abcxyzabc”。 我们可以使用反向引用将正则表达式重写为“(abc)xyz \\ 1″。 \1 指第1组,即(abc)。 \2 引用组2, \3 引用组3,依此类推。 以下代码显示如何显示格式化的电话号码。在正则表达式 \b(\d{3})(\d{3})(\d{4})\b \b 表示我们感兴趣的是仅在字边界匹配十个数字。 import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String regex = "\(\\d{3})(\\d{3})(\\d{4})\"; Pattern p = Pattern.compile(regex); String source = "1234567890, 12345, and 9876543210"; Matcher m = p.matcher(source); while (m.find()) { System.out.println("Phone: " + m.group() + ", Formatted Phone: (" + m.group(1) + ") " + m.group(2) + "-" + m.group(3)); } } } 上面的代码生成以下结果。 例子 以下代码显示如何引用替换文本中的组。 $n ,其中 n 是组编号,替换文本内部是指组 n 的匹配文本。 例如, $1 是指第一个匹配的组。要重新格式化电话号码,我们将使用($1) $2- $3 。 import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String regex = "\(\\d{3})(\\d{3})(\\d{4})\"; String replacementText = "($1)...

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

Java 正则表达式边界

Java正则表达式教程 – Java正则表达式边界 要匹配一行的开头,或匹配整个单词,不是任何单词的一部分,我们必须为匹配器设置边界。 下表列出了正则表达式中的边界匹配器 边界匹配 含义 ^ 一行的开始 $ 一行的结束 \b 字边界 \B 非字边界 \A 输入的开始 \G 上一次匹配的结束 \Z 输入的结束,但是对于最终终止符,如果有的话 \z 输入的结束 例子 以下代码演示了如何使用正则表达式匹配字边界。 public class Main { public static void main(String[] args) { // \\b to get \b inside the string literal. String regex = "\\bJava\\b"; String replacementStr = "XML"; String inputStr = "Java and Javascript"; String newStr = inputStr.replaceAll(regex, replacementStr); System.out.println("Regular Expression: " + regex); System.out.println("Input String: " + inputStr); System.out.println("Replacement String: " + replacementStr); System.out.println("New String: " + newStr); } } 上面的代码生成以下结果。

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

Java 正则表达式匹配

Java正则表达式教程 – Java正则表达式匹配 Matcher 类对字符序列执行匹配通过解释在 Pattern 对象中定义的编译模式。 Pattern 类的 matcher()方法创建一个实例的 Matcher 类。 import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String regex = "[a-z]@."; Pattern p = Pattern.compile(regex); String str = "abc@yahoo.com,123@cnn.com,abc@google.com"; Matcher m = p.matcher(str); } } 匹配器的以下方法执行匹配。 find() method start() method end() method group() method find()方法 find()方法找到输入中的模式的匹配。 如果find成功,它返回true。否则,它返回false。 第一次调用 find()在输入的开始处开始搜索。下一个调用将在上一次匹配后开始搜索。 我们可以使用while循环与 find()方法来查找所有的匹配。 find()方法是一个重载的方法。find()方法的另一个版本接受一个整数参数,这是开始查找匹配的偏移量。 start()方法 find()方法返回上一次匹配的开始索引。 它在成功的find()方法调用之后使用。 end()方法 end()方法返回匹配字符串中最后一个字符的索引加一。 匹配后, str.substring(m.start(),m.end())给出匹配的字符串。 import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String regex = "[a-z]@."; Pattern p = Pattern.compile(regex); String str = "abc@yahoo.com,123@cnn.com,abc@google.com"; Matcher m = p.matcher(str); if (m.find()) { String foundStr = str.substring(m.start(), m.end()); System.out.println("Found string is:" + foundStr); } } } 上面的代码生成以下结果。 group()方法 group()方法通过前一个成功的find()方法调用返回找到的字符串。 import java.util.regex.Matcher; import...

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

Java 正则表达式模式

Java正则表达式教程 – Java正则表达式模式 包 java.util.regex 包含三个类,以支持正则表达式的完整版本。 模式 匹配 PatternSyntaxException Pattern 保存正则表达式的编译形式。 Matcher 将要匹配的字符串与模式相关联,并执行实际匹配。 PatternSyntaxException 表示格式错误的正则表达式中的错误。 编译正则表达式 没有公共构造函数的模式是不可变的,可以共享。 Pattern 类包含一个静态compile()方法,它返回一个 Pattern 对象。 compile()方法是重载的。 static Pattern compile(String regex) static Pattern compile(String regex, int flags) 以下代码将正则表达式编译为Pattern对象: import java.util.regex.Pattern; public class Main { public static void main(String[] args) { // Prepare a regular expression String regex = "[a-z]@."; // Compile the regular expression into a Pattern object Pattern p = Pattern.compile(regex); } } compile()方法的第二个版本设置修改模式匹配方式的标志。 flags参数是一个位掩码,并在Pattern类中定义为int常量。 Flag 描述 Pattern.CANON_EQ 启用规范等效。 Pattern.CASE_INSENSITIVE 启用不区分大小写的匹配。 Pattern.COMMENTS 启用不区分大小写的匹配。… Pattern.DOTALL 允许在模式中的空格和注释。忽略以#开头的空格和嵌入的注释,直到行的结尾。 Pattern.LITERAL 启用模式的文字解析。 这个标志使元字符和转义序列作为正常字符。 Pattern.MULTILINE 启用多行模式。 默认情况下,^和$匹配输入序列的开始和结束。 此标志使模式仅逐行匹配或输入序列的末尾。 Pattern.UNICODE_CASE 启用支持Unicode的大小写。 与CASE_INSENSITIVE标志一起,可以根据Unicode标准执行不区分大小写的匹配。 Pattern.UNICODE_ CHARACTER_CLASS 启用预定义字符类和POSIX字符类的Unicode版本。 设置此标志时,预定义字符类和POSIX字符类符合Unicode技术标准。 Pattern.UNIX_LINES 启用Unix行模式。 设置此标志时,只有\ n字符被识别为行终止符。 例子 以下代码编译设置CASE_INSENSTIVE和DOTALL标志的正则表达式。 import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String regex = "[a-z]@."; Pattern p =...