Java教程 第74页

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

Java 正则表达式量词

Java正则表达式教程 – Java正则表达式量词 我们可以指定正则表达式中的字符的次数可以匹配字符序列。 为了使用正则表达式表达一个数字或更多的模式,我们可以使用量词。 下表列出了量词及其含义。 量词 含义 * 零次或更多次 + 一次或多次 ? 一次或根本不 {m} 正好m次 {m,} 至少m次 {m,n} 至少m,但不超过n次 量词必须遵循字符或字符类。 例子 import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { // A group of 3 digits followed by 7 digits. String regex = "\\b(\\d{3})\\d{7}\\b"; // Compile the regular expression Pattern p = Pattern.compile(regex); String source = "12345678, 12345, and 9876543210"; // Get the Matcher object Matcher m = p.matcher(source); // Start matching and display the found area codes while (m.find()) { String phone = m.group(); String areaCode = m.group(1); System.out.println("Phone: " + phone + ", Area Code: " + areaCode); } } } 上面的代码生成以下结果。 例2 * 匹配零个或多个 d 。 import java.util.regex.Pattern; public class Main...

Java 打印样式格式-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java 打印样式格式

Java格式 – Java 打印样式格式 java.util.Formatter 类支持printf样式格式化。 printf样式格式化是C编程语言的良好支持。 以下代码在Java中使用C的Printf样式格式。 import java.util.Date; public class Main { public static void main(String[] args) { // Formatting strings System.out.printf("%1$s, %2$s, and %3$s %n", "ABC", "DEF", "XYZ"); System.out.printf("%3$s, %2$s, and %1$s %n", "ABC", "DEF", "XYZ"); // Formatting numbers System.out.printf("%1$4d, %2$4d, %3$4d %n", 1, 10, 100); System.out.printf("%1$4d, %2$4d, %3$4d %n", 10, 100, 1000); System.out.printf("%1$-4d, %2$-4d, %3$-4d %n", 1, 10, 100); System.out.printf("%1$-4d, %2$-4d, %3$-4d %n", 10, 100, 1000); // Formatting date and time Date dt = new Date(); System.out.printf("Today is %tD %n", dt); System.out.printf("Today is %tF %n", dt); System.out.printf("Today is %tc %n", dt); } } 上面的代码生成以下结果。 格式化类 我们可以使用System.out.println()和System.out.print()方法在标准输出上打印文本。 System.out是java.io.PrintStream类的一个实例,其中有println()和print()实例方法。 PrintStream类还有 format()和 printf()它可以支持printf样式的格式化。 String类的静态format()也支持printf样式的格式化。 PrintStream类的format()/printf()方法和String类的format()静态方法的格式化行为是相同的。 PrintStream类中的format()/printf()方法将格式化的输出写入输出流,而String类的format()方法返回格式化的输出。 PrintStream类的format()/printf()方法和String类的format()静态方法取决于Formatter类。 格式化程序用于格式化文本,可以写入以下目的地: 附加(例如StringBuffer,StringBuilder,Writer等) 文件 输出流 打印流 以下代码显示如何使用Formatter类来格式化数据并将结果存储在StringBuilder类中。 import java.util.Date; import java.util.Formatter; public class...

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

Java 打印格式字符串

Java格式 – Java 打印格式字符串 使用Formatter格式化数据需要两种类型的输入: 格式字符串 值列表 格式字符串定义如何格式化值列表。 格式字符串可以包含静态文本和嵌入格式说明符。静态文本在格式字符串中作为结果输出。 格式说明符用于两个目的。 它用作格式字符串中格式化数据的占位符 它指定如何格式化数据 格式说明符 假设您要打印包含某人的出生日期的文本。以下是此类文本的示例: January 16, 1970 is Mike"s birth day. Let"s go and celebrate. January 11, 1971 is John"s birth day. Let"s go and celebrate. January 16, 1972 is Jane"s birth day. Let"s go and celebrate. January 16, 1973 is Kite"s birth day. Let"s go and celebrate. 上述文本包含固定文本和格式化文本。 为了重用格式和填写人名称和生日我们可以写一个模板如下: <month> <day>, <year> is <name>"s birth day. Let"s go and celebrate. 生日日期用尖括号括起来,以及人的姓名。我们可以称它为占位符。 后来我们可以为占位符提供真正的价值。 要在Formatter类中使用模板,我们将占位符转换为格式说明符。模板变为格式字符串。 格式说明符以百分号%开头。 我们可以重写可以与Formatter类一起使用的模板字符串,如下所示。 %1$tB %1$td, %1$tY is %2$s"s birth day. Let"s go and celebrate. 在此格式字符串中,%1 $ tB ,%1 $ td %1 $ tY 和%2 $ s 是格式说明符。 格式字符串中的其余文本,例如“生日,让我们去庆祝”,是固定文本。 例子 以下代码显示如何使用上述格式字符串打印格式化文本。 在代码中,我们创建了一个LocalDate来存储Mike的生日。 本地日期值和“Mike”成为格式字符串的输入值。 import java.time.LocalDate; import java.time.Month; public class Main { public static void main(String[] args) { LocalDate...

Java 打印值索引-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java 打印值索引

Java格式 – Java 打印值索引 以下代码使用 s 转换将其参数格式化为字符串。 public class Main { public static void main(String[] args) { System.out.printf("%s, %s, and %s", "A", "B", "C"); } } 上面的代码生成以下结果。 格式字符串中的格式说明符可以通过三种方式引用参数: 普通索引 显式索引 相对索引 普通索引 当格式说明符没有指定参数索引值作为上面的代码时,它被称为普通索引。 在普通索引中,参数索引由格式字符串中格式说明符的位置确定。 不带参数索引的第一个格式说明符的索引为1,它指的是第一个参数。 对于以下格式字符串, System.out.printf("%s, %s, and %s", "A", "B", "C"); 第一个%s 的索引为1,第二个%s 的2。 索引为1的第一个“%s”格式指的是第一个参数“A”。第二个“%s”格式指第二个参数“B”。 如果在格式字符串中有比格式说明符更多的参数,则将忽略额外的参数。 将抛出 java.util.MissingFormatArgumentException 如果有比参数更多的格式说明符。 以下代码将抛出异常,因为参数的数量少于格式说明符的数量。 public class Main { public static void main(String[] args) { System.out.printf("%s, %s, and %s", "A", "B"); } } 上面的代码生成以下结果。 Formatter 的 format()方法的最后一个参数class是一个varargs参数。 我们还可以将数组传递给varargs参数。 显式索引 显式索引在格式说明符中明确指定了参数索引。 参数索引,以 $ 结尾的整数,在格式说明符中紧跟在%符号之后。 以下代码使用带有显式索引的三个格式说明符:“%1 $ s”,“%2 $ s”和“%3 $ s”。 public class Main { public static void main(String[] args) { System.out.printf("%1$s, %2$s, and %3$s", "A", "B", "C"); } } 上面的代码生成以下结果。 显式索引可以引用参数列表中任何顺序的参数。 public class Main { public static void main(String[] args) { System.out.printf("%3$s, %2$s,...

Java 打印格式标志

Java格式 – Java 打印格式标志 Java 打印标志更改格式化的输出。 下表列出了可在格式说明符中使用的所有标志。 标志 描述 // “-“ 左对齐。 如果没有“ – “标志,右对齐。 “#” 格式以格式说明符的替代形式 “+” 将+号添加到正值。 仅适用于数值。 “” 为正值添加前导空格。 仅适用于数值。 “0” 添加零填充。 仅适用于数值。 “,” 添加特定于语言环境的分组分隔符。 它仅应用于数值。 “(“ 为负数添加括号。 它仅适用于数值。 “<“ 重用前一个格式说明符的参数。 它主要用于格式化日期和时间。 例: 格式字符串 argument 结果 “”%6s”” “abc” “abc” “”%-6s”” “abc” “abc” “%x” 1234 4d2 “%#x” 1234 0x4d2 “%d” 123 123 “%+d” 123 +123 “”%d”” 123 “123” “”% d“” 123 “123″ “”%6d”” 123 “123″ “”%06d”” 123 “000123” “%,d” 12345 12,345(美国本地) “%,d” 12345 12 345(法国区) “%d” -2014 -2014 “%(d” -2014 (2014) “%s and%< s” “abc” abc和abc

Java 打印格式-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java 打印格式

Java格式 – Java 打印格式 不同的格式字符可以格式化不同数据类型的值。例如,“s”用于将值格式化为字符串。 Java 打印格式化类型可以将数据类型格式化为四种类型: 一般格式化 字符格式化 数字格式化 日期/时间格式 大写变量 许多转换字符具有大写变体。例如,“S”是“s”的大写变体。 大写变量将格式化的输出转换为大写。 下面的代码演示了使用大写变量“S”的效果。 public class Main { public static void main(String[] args) { System.out.printf("%s and %<S", "abc"); } } 上面的代码生成以下结果。 一般格式化 一般格式化可以格式化任何数据类型的值。 下表列出了可用的转化根据一般格式类别。 转换字母: b 大写: B基于参数输出“true”或“false”。 “false”表示空参数和false布尔参数。 否则,“真”。 转换字母: h 大写: H以字符串的参数的十六进制格式输出哈希码。 如果参数为null,它会产生“null”。 转换字母: s 大写: S输出参数的字符串表示形式。如果参数为null,它会产生一个“null”字符串。 如果参数实现了Formattable接口,它将调用参数的formatTo()方法。如果参数不实现Formattable接口,则调用toString()方法。 一般格式化的格式说明符的一般语法是 %<argument_index$><flags><width><.precision><conversion> width 指定输出中的最小字符数。 如果字符串表示的长度小于width值,结果将用空格填充。 默认情况下,空格填充在参数值的左侧执行。如果使用“ – “标志,则向右执行空格填充。 宽度和精度一起决定结果的最终内容。 precision指定输出的最大字符数。在应用宽度之前,精度应用于参数。 如果精度小于参数的长度,参数被截断为在精度值中设置的长度,并执行空间填充以将长度与宽度的值相匹配。 考虑下面的代码段: System.out.printf(""%4.1s"", "abc"); 上面的代码生成以下结果。 例子 以下是使用布尔,字符串和散列码格式转换的一些示例。 public class Main { public static void main(String[] args) { // Boolean conversion System.out.printf(""%b", "%6b", "%.4b"%n", true, false, true); System.out.printf(""%b", "%6b", "%.4b"%n", "A", "B", "C"); System.out.printf(""%B", "%6b", "%.4b"%n", "A", "B", "C"); System.out.printf("%b %n", 2014); System.out.printf("%b %n", new Object()); // String conversion System.out.printf(""%s", "%5s", "%.3s"%n", "A", "B", "C"); System.out.printf(""%S", "%5S", "%.3S"%n", "A", "B",...

Java 打印数字格式-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java 打印数字格式

Java格式 – Java 打印数字格式 Java 打印支持两种类型的数字格式: 整数格式化 浮点数格式化 整数格式化 整数格式化格式化整数。 它可以格式化byte, Byte, short, Short, int, Integer, long, Long和BigInteger的值。 以下列表说明了格式字符。 d 以特定于语言环境的十进制整数格式化参数。“#”标志不能用于此转换。 o 将参数格式化为基本8整数。如果使用“#”标志,输出从0开始。“(”,“+”,“”和“,”标志不能用于此转换。 x或大写变量X将参数格式化为基本16整数。如果使用“#”标志,则输出以“0x”开头。如果’X’与’#’标志一起使用,输出以“0X”开头。‘(’,’+’,”和’,’标志不能与byte,Byte,short,short,int,Integer,long和Long数据类型的参数一起使用。‘,’标志不能与BigInteger数据类型的参数一起使用。 用于整数格式化的格式说明符的一般语法如下: %<argument_index$><flags><width><conversion> 格式说明符的精度不适用于整数格式化。 下面的代码演示了使用带有各种标志的“d”转换来格式化整数: public class Main { public static void main(String[] args) { System.out.printf(""%d" %n", 1234); System.out.printf(""%6d" %n", 1234); System.out.printf(""%-6d" %n", 1234); System.out.printf(""%06d" %n", 1234); System.out.printf(""%(d" %n", 1234); System.out.printf(""%(d" %n", -1234); System.out.printf(""% d" %n", 1234); System.out.printf(""% d" %n", -1234); System.out.printf(""%+d" %n", 1234); System.out.printf(""%+d" %n", -1234); } } 上面的代码生成以下结果。 例子 当 o 和 x 与byte, Byte, short, Short, int, Integer, long, 和 Long 数据类型的负参数一起使用时,参数值首先通过向其加上数字2N转换为无符号数, 是值的位数。 转换不会转换负BigInteger参数。 public class Main { public static void main(String[] args) { byte b1 = 1; byte b2 = -2; System.out.printf("%o\n", b1); System.out.printf("%o", b2); } } 例2 以下代码段显示了int和BigInteger的“o”和“x”转换的更多示例参数类型: import java.math.BigInteger; public class...

Java 打印日期/时间格式-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java 打印日期/时间格式

Java格式 – Java 打印日期/时间格式 Java 打印日期/时间格式处理日期,时间和日期时间值。 Java 打印日期/时间格式可以应用于格式值为long,Long,java.util.Calendar,java.util.Date,和java.time.temporal.TemporalAccessor类型。 长类型中的值解释为自1970年1月1日午夜UTC之后过去的毫秒数。 t大写变量T转换字符用于格式化日期/时间值。 日期/时间格式化的一般语法如下: %<argument_index$><flags><width><conversion> 精度不适用于日期/时间格式。 对于日期/时间格式,转换是一个双字符序列。 第一个字符总是’t’或’T’。 第二个字符,称为转换后缀,确定日期/时间参数的格式。 下表包含时间格式的后缀字符 后缀 含义 H 将时间格式设置为24小时制时钟的两位数小时。 有效值为00到23. 00用于午夜。 I 格式化12小时制时钟的一位两位数小时。 有效值为01到12。 k 格式化时间与H后缀相同,除了它不向输出添加前导零。 有效值为0到23。 l 格式化时间与“I”后缀相同,除了它不添加前导零。 有效值为1到12。 M 一小时内两位数的分钟。 有效值为00到59。 S 一个两位数的秒。 有效值为00到60。 L 一个三位数毫秒。 有效值为000到999。 N 一个九位数的纳秒。 有效值为000000000至999999999。 p 使用小写格式化特定于语言环境的上午或下午字符串。对于美国地区,“am”或“pm”。 要获取“AM”和“PM”,请使用大写变量“T”作为转换字符。 z 输出与GMT的数值时区偏移(例如,+0530)。 Z 输出时区的字符串缩写(例如,CST,EST,IST等)。 s 输出秒自1970年1月1日午夜UTC。 Q 自1970年1月1日午夜UTC以来的输出毫秒数。 日期格式化的后缀字符的下表列表 信 含义 B 在美国语言环境中输出本地特定的月份全名,例如“一月”,“二月”。 b 输出特定于语言环境的缩写月份名称,例如美国语言环境中的“Jan”,“Feb”。 h 与“b”相同。 输出特定于语言环境的缩写月份名称,例如美国语言环境中的“Jan”,“Feb”。 A 输出一周中某天的特定于地区的全名,例如美国地区的“星期日”,“星期一”。 a 输出一周中某天的特定于语言环境的短名称,例如美国语言环境的“Sun”,“Mon”。 C 将四位数年份除以100,并将结果格式化为两位数。 如果结果数字为一位数,它将添加一个前导零。 有效值为00到99.例如,如果四位数年份是2014,则它将输出20。 Y 如果年份包含少于四位数,则输出带有前导零的四位数年份。 y 输出年份的最后两位数字,如有必要,添加前导零。 2011年将输出11。 j 一年中三位数的日期。 有效值为000到366。 m 一个两位数的月份。 有效值为01到13.需要13的特殊值来支持农历日历。 d 一个两位数的日期。 有效值为01到31。 e 每月的日期。 有效值为1到31。 下表列出了日期/时间格式的后缀字符 格式 描述 R 输出时间以24小时时钟格式为“小时:分钟”。 它输出与%tH:%tM相同。 示例:11:23 T 以24小时制输出时间,格式为“小时:分:秒”。 它输出相同的“%tH:%tM:%tS”。 示例11:23:10 r 以24小时制输出时间,格式为“小时:分:秒”。 它输出相同的“%tH:%tM:%tS”。 示例11:23:10… D 输出日期为“%tm /%td /%ty”,例如“01/19/14″ F 输出日期为“%tY-%tm-%td”,如“2014-01-19″。 c 将日期和时间输出为“%ta%tb%td%tT%tZ%tY”,例如“Wed Jan 20 12:22:06 CST 2014″。 例子 以下代码显示如何使用日期时间格式化程序。...

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

Java 数字格式类

Java格式 – Java数字格式类 以下两个类可用于格式化和解析数字: java.text.NumberFormat java.text.DecimalFormat NumberFormat 类可以格式化一个数字特定地区的预定义格式。 DecimalFormat 类可以格式化数字以特定区域设置的自定义格式。 NumberFormat类的 getXXXInstance()方法返回格式化程序对象的实例。 XXX可以由数字,货币,整数或百分比替换,或只是getInstance()。这些方法都是重载的。 如果你调用它们没有参数,它们返回一个格式化对象默认语言环境。 使用number参数调用format()方法以将格式化的数字作为字符串。 import java.text.NumberFormat; public class Main { public static void main(String[] args) { NumberFormat formatter; // Get number formatter for default locale formatter = NumberFormat.getInstance(); System.out.println(formatter.format(12312.123123)); } } 上面的代码生成以下结果。 例子 下面的代码说明了如何以默认格式为当前语言环境,法语语言环境和德语语言环境格式化数字。 import java.text.NumberFormat; import java.util.Locale; public class Main { public static void main(String[] args) { double value = 123456789.9876543; // Default locale printFormatted(Locale.getDefault(), value); // Indian locale Locale indianLocale = new Locale("en", "IN"); printFormatted(indianLocale, value); } public static void printFormatted(Locale locale, double value) { // Get number and currency formatter NumberFormat nf = NumberFormat.getInstance(locale); NumberFormat cf = NumberFormat.getCurrencyInstance(locale); System.out.println("Format value: " + value + " for locale: " + locale); System.out.println("Number: " + nf.format(value)); System.out.println("Currency: "...

Java 日期格式类-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java 日期格式类

Java格式 – Java日期格式类 Java 8有新的Date-Time API来处理日期和时间。 我们应该使用新的Java 8 Date-Time API来格式化和解析日期时间值。 如果我们正在编写与日期和时间相关的新代码,我们应该使用新的Date-Time API。 使用新的Java 8日期时间API格式化日期和时间。 此部分适用于使用旧日期和日历类的旧代码。 类 Java库提供了两个类来格式化日期: java.text.DateFormat java.text.SimpleDateFormat DateFormat 类是一个抽象类并且我们可以使用 DateFormat 类以预定义的格式来格式化日期。 因为它是抽象的,所以我们不能创建一个 DateFormat 类的实例使用 new 运算符。 我们必须使用它的一个 getXxxInstance()方法来创建新的实例。Xxx可以是日期,日期时间或时间。 要格式化日期时间值,我们使用 format()方法 DateFormat 类。 DateFormat类的格式化文本取决于两件事: 样式 语言环境 格式的样式决定了包括多少日期时间信息在格式化的文本 语言环境确定要使用的语言环境。 格式样式 Date Format 类将五个样式定义为常量: DateFormat.DEFAULT DateFormat.SHORT DateFormat.MEDIUM DateFormat.LONG DateFormat.FULL DEFAULT 格式与 MEDIUM 相同。getInstance()使用 SHORT 。 下表显示了对于美国区域设置以不同样式格式化的相同日期。 样式 格式化日期 DEFAULT Mar 27, 2014 SHORT 3/27/14 MEDIUM Mar 26, 2014 LONG March 26, 2014 FULL Sunday, November 2, 2014 例子 以下代码显示如何以简体中文格式显示语言环境的默认日期,法国和德国。 import java.text.DateFormat; import java.util.Date; import java.util.Locale; public class Main { public static void main(String[] args) { Date today = new Date(); // Print date in the default locale format Locale defaultLocale = Locale.getDefault(); printLocaleDetails(defaultLocale); printDate(defaultLocale, today); // Print date in French format...