国际化程序
1. 国际化程序
在包下添加配置文件 后缀为.properties
info_en_US.properties
sys.name=welcome login XXX system sys.add=1.add sys.delete=2.delete sys.update=3.update sys.query=4.query
info_zh_CN.properties
sys.name=\u6B22\u8FCE\u767B\u5F55XXX\u7CFB\u7EDF sys.add=1.\u6DFB\u52A0 sys.delete=2.\u5220\u9664 sys.update=3.\u66F4\u65B0 sys.query=4.\u67E5\u8BE2
使用
package com.gkd.i18n; import java.text.MessageFormat; import java.util.Locale; import java.util.ResourceBundle; import java.util.Scanner; public class I18NDemo { public static void main(String[] args) { //指定语言环境 Locale l = Locale.CHINA; ResourceBundle rb = ResourceBundle.getBundle("com.gkd.i18n.info", l); System.out.println(rb.getString("sys.name")); System.out.println(rb.getString("sys.add")); System.out.println(rb.getString("sys.delete")); System.out.println(rb.getString("sys.update")); System.out.println(rb.getString("sys.query")); } }
执行效果:
指定语言环境为英文
package com.gkd.i18n; import java.text.MessageFormat; import java.util.Locale; import java.util.ResourceBundle; import java.util.Scanner; public class I18NDemo { public static void main(String[] args) { //指定语言环境 Locale l = Locale.US; ResourceBundle rb = ResourceBundle.getBundle("com.gkd.i18n.info", l); System.out.println(rb.getString("sys.name")); System.out.println(rb.getString("sys.add")); System.out.println(rb.getString("sys.delete")); System.out.println(rb.getString("sys.update")); System.out.println(rb.getString("sys.query")); } }
处理动态文本
在配置文件中使用占位符
sys.wel=\u6B22\u8FCE{0}\u767B\u5F55\u7528{1}\u6237\u7BA1\u7406\u7CFB\u7EDF
占位符从0开始
在Java代码中使用 text包下面的 MessageFormat类处理动态文本
String str = MessageFormat.format(rb.getString("sys.wel"), userName,password);
完整代码
package com.gkd.i18n; import java.text.MessageFormat; import java.util.Locale; import java.util.ResourceBundle; import java.util.Scanner; public class I18NDemo { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入账号:"); String userName = input.next(); System.out.println("请输入密码:"); String password = input.next(); //指定语言环境 Locale l = Locale.US; ResourceBundle rb = ResourceBundle.getBundle("com.gkd.i18n.info", l); String str = MessageFormat.format(rb.getString("sys.wel"), userName,password); System.out.println(rb.getString("sys.name")); System.out.println(rb.getString("sys.add")); System.out.println(rb.getString("sys.delete")); System.out.println(rb.getString("sys.update")); System.out.println(rb.getString("sys.query")); System.out.println(str); } }
运行效果:
比较器
Arrays.sort()方法可以实现数组的排序功能.
接下来我们自己定义一个学生类:
package com.gkd.compar; public class Student{ private String name; private int age; private String sex; public Student() { super(); } public Student(String name, int age, String sex) { super(); this.name = name; this.age = age; this.sex = sex; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public void say(){ this.age = 1000; } @Override public String toString() { return "Student [name=" + name + ", age=" + age + ", sex=" + sex + "]"; } }
然后准备一个Student数组,传给Arrays.sort()方法进行排序
public static void comparableDemo(){ Student s1 = new Student("张三", 18, "男"); Student s2 = new Student("李四", 78, "女"); Student s3 = new Student("王五", 32, "男"); Student s4 = new Student("赵丽", 45, "女"); Student s5 = new Student("田七", 23, "女"); Student s6 = new Student("宋八", 66, "男"); Student[] students = new Student[6]; students[0] = s1; students[1] = s2; students[2] = s3; students[3] = s4; students[4] = s5; students[5] = s6; for(Student s : students){ System.out.println(s); } System.out.println("--------------"); Arrays.sort(students); for(Student s : students){ System.out.println(s); } }
运行结果:
Comparable接口可以指定自定义对象的比较规则.
如果我们自定义的对象要想通过Arrays.sort()方法进行排序.则必须实现Comparable接口,实现comparTo方法
接下来修改Student类,完整代码如下:
package com.gkd.compar; public class Student implements Comparable<Student>{ private String name; private int age; private String sex; public Student() { super(); } public Student(String name, int age, String sex) { super(); this.name = name; this.age = age; this.sex = sex; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public void say(){ this.age = 1000; } @Override public String toString() { return "Student [name=" + name + ", age=" + age + ", sex=" + sex + "]"; } @Override public int compareTo(Student o) { if(o == null) return -1; if(this.age < o.age) return 1; else if(this.age > o.age) return -1; return 0; } }