类库使用案例分析
1、StringBuffer使用
定义一个StringBuffer类对象,然后通过append()方法向对象中添加26个小写字母,要求每次只添加一次,共添加26次,然后按照逆序的方式输出,并且可以删除前5个字符。
本操作主要是训练StringBuffer类中的处理方法,因为StringBuffer的主要特点是内容允许修改。
public class JavaAPIDemo{
public static void main(String[] args) {
StringBuffer stringBuffer = new StringBuffer();
for (int i = 'a'; i <= 'z'; i ++) { //直接循环设置
stringBuffer.append((char) i); //保存字符
}
stringBuffer.reverse().delete(0 , 5); //反转处理
System.out.println(stringBuffer);
}
}
//结果:utsrqponmlkjihgfedcba
因为StringBuffer的内容是允许修改的,而String内容不允许修改,现在的程序是一个单线程开发,所以不需要去考虑并发访问问题。
2、随机数组
利用Random类产生5个1~30之间(包括1和30)的随机整数
Random产生的随机数的操作之中会包含有数字0,所以此时不应该存在有数字0的问题
public class JavaAPIDemo{
public static void main(String[] args) {
int [] result= NumberFactory.create(5);
System.out.println(Arrays.toString(result));
}
}
class NumberFactory{
private static Random random = new Random();
/**
* 通过随机数来生成一个数组的内容,该内容不包括0
* @param len 要开辟的数组大小
* @return 包含随机数的内容
*/
public static int [] create(int len){
int data [] = new int[len]; //开辟新的数组
int foot = 0;
while (foot < data.length){
int num = random.nextInt(30);
if (num != 0) {
data [foot ++] = num; //保存数据
}
}
return data;
}
}
3、Email验证
输入一个 Email地址,然后使用正则表达式验证该Email 地址是否正确。
对于此时的输入可以通过命令参数实现数据的输入,如果要想进行验证,最好的做法是设置一个单独的验证处理类。
class Validator{
private Validator(){}
public static boolean isEmail(String email){
if (email == null || "".equals(email)) { //数据为空
return false;
}
String regex = "\\w+@\\w+\\.\\w+";
return email.matches(regex);
}
}
public class JavaAPIDemo{
public static void main(String[] args) {
String emailA = "123@qq";
String emailB = "123@163.com";
if (Validator.isEmail(emailA)){
System.out.println("emailA:输入的email的地址正确!");
}
if (Validator.isEmail(emailB)){
System.out.println("emailB:输入的email的地址正确!");
}
}
}
//结果:emailB:输入的email的地址正确!
4、扔硬币
编写程序,用0~1之间的随机数来模拟扔硬币试验,统计扔1000次后出现正、反面的次数并输出。
class Coin{ //模拟抛硬币操作
private int front; //保存正面次数
private int back; //保存背面次数
private Random random = new Random();
/**
* 抛硬币的处理
* @param num 抛硬币的执行次数
*/
public void throwCoin(int num){
for (int i = 0; i < num; i++) {
int temp = random.nextInt(2);
if (temp == 0) {
front ++;
} else {
back ++;
}
}
}
public int getFront() {
return front;
}
public int getBack() {
return back;
}
}
public class JavaAPIDemo{
public static void main(String[] args) {
Coin coin = new Coin();
coin.throwCoin(1000);
System.out.println("正面出现的次数:" + coin.getFront() + "、背面出现的次数:" + coin.getBack());
}
}
//结果:正面出现的次数:487、背面出现的次数:513
5、IP验证
编写正则表达式,判断给定的是否是一个合法的IP地址。.
IP地址的组成就是数字,对于数字的组成有一个基础的要求,第一位的内容只能是无、1、2,后面的内容可以0-5,第三位内容是0-9
class Validator{
public static boolean validateIP(String ip){
if (ip == null || "".equals(ip)) {
return false;
}
String regex = "([12]?[0-9]?[0-9]\\.){3}[12]?[0-9]?[0-9]";
if (ip.matches(regex)){ //验证通过,还需要对IP地址进行拆分处理
String result [] = ip.split("\\."); //拆分数据
for (int i = 0; i < result.length; i++) {
int temp = Integer.parseInt(result[i]);
System.out.println(temp);
if (temp > 255) {
return false;
}
}
} else {
return false;
}
return true;
}
}
public class JavaAPIDemo{
public static void main(String[] args) {
String ip = "192.168.1.245";
System.out.println(Validator.validateIP(ip));
}
}
//结果:true
6、HTML拆分
给定下面的HTML代码:
要求对内容进行拆分,拆分后的结果是:
face Arial,Serif
size +2
color red
public class JavaAPIDemo{
public static void main(String[] args) {
String str = "<font face=\"Arial,Serif\" size=\"+2\" color=\"red\">";
String regex = "\\w+=\"[a-zA-Z0-9,\\+]+\"";
Matcher matcher = Pattern.compile(regex).matcher(str);
while (matcher.find()) {
String temp = matcher.group();
String[] result = temp.split("=");
System.out.println(result[0] + " " + result[1].replaceAll("\"" , ""));
}
}
}
//结果:
//face Arial,Serif
//size +2
//color red
7、国家代码
编写程序,实现国际化应用,从命令行输入国家的代号,例如,1表示中国,2表示美国,然后根据输入代号的不同调用不同的资源文件显示信息。
本程序的实现肯定要通过Locale类的对象来指定区域,随后利用ResourceBundle类加载资源文件
1、定义中文的资源文件:Message_zh_CN.properties
info=欢迎您的访问
2、定义英文的资源文件:Message_en_US.properties
info=Welcome
3、定义程序类加载控制
class MessageUtil{
public static final int CHINA = 1;
public static final int USA = 2;
private static final String KEY = "info";
private static final String BASENAME = "Resource.message";
public String getMessage(int num) {
Locale locale = this.getLocale(num);
if (locale == null) {
return null;
} else {
return ResourceBundle.getBundle(BASENAME , locale).getString(KEY);
}
}
private Locale getLocale(int num) {
switch (num) {
case CHINA:
return new Locale("zh" , "CN");
case USA:
return new Locale("en" , "US");
default:
return null;
}
}
}
public class JavaAPIDemo{
public static void main(String[] args) {
System.out.println(new MessageUtil().getMessage(1));
}
}
//欢迎您的访问
8、学生信息比较
按照“姓名:年龄:成绩|姓名:年龄:成绩”的格式定必字符串“张三: 21:98|李四: 22:89|王五 20:70”,要求将每组值分别保存在 Student对象之中,并对这些对象进行排序,排序的原则为:按照成绩由高到低排序, 如果成绩相等,则按照年龄由低到高排序。
本程序最典型的做法是直接李荣比较器来完成处理。
class Student implements Comparable<Student> {
private String name;
private int age;
private double score;
public Student(String name, int age, double score) {
super();
this.name = name;
this.age = age;
this.score = score;
}
@Override
public int compareTo(Student student) {
if (score < student.score){
return 1;
} else if (score >student.score) {
return -1;
}else {
return age - student.age;
}
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", score=" + score +
'}' + "\n";
}
}
public class JavaAPIDemo{
public static void main(String[] args) {
String input = "张三:21:98|李四:22:89|王五:20:70";
String[] result = input.split("\\|");
Student[] students = new Student[result.length];
for (int i = 0; i < result.length; i++) {
String[] temp = result[i].split(":");
students[i] = new Student(temp[0], Integer.parseInt(temp[1]), Double.parseDouble(temp[2]));
}
Arrays.sort(students);
System.out.println(Arrays.toString(students));
}
}
//结果:[Student{name='张三', age=21, score=98.0}
//, Student{name='李四', age=22, score=89.0}
//, Student{name='王五', age=20, score=70.0}
//]
结构化字符串处理:“内容|内容|”,如果有复杂的情况内容里面可能再有其它标记 “”
``
2、定义英文的资源文件:Message_en_US.properties
info=Welcome
3、定义程序类加载控制
class MessageUtil{
public static final int CHINA = 1;
public static final int USA = 2;
private static final String KEY = "info";
private static final String BASENAME = "Resource.message";
public String getMessage(int num) {
Locale locale = this.getLocale(num);
if (locale == null) {
return null;
} else {
return ResourceBundle.getBundle(BASENAME , locale).getString(KEY);
}
}
private Locale getLocale(int num) {
switch (num) {
case CHINA:
return new Locale("zh" , "CN");
case USA:
return new Locale("en" , "US");
default:
return null;
}
}
}
public class JavaAPIDemo{
public static void main(String[] args) {
System.out.println(new MessageUtil().getMessage(1));
}
}
//欢迎您的访问