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;
}
}