JAVA基础学习之IP简述使用、反射、正则表达式操作、网络爬虫、可变参数、了解和入门注解的应用、使用Eclipse的Debug功能(7)

1.IP简述使用
//获取本地主机ip地址对象。
InetAddress ip = InetAddress.getLocalHost();
//获取其他主机的ip地址对象。
ip = InetAddress.getByName("192.168.1.108");
//InetAddress.getByName("my_think");
System.out.println(ip.getHostAddress());
System.out.println(ip.getHostName());

2.反射
String className = "com.test.demo1.Person";
//找寻该名称类文件,并加载进内存,并产生Class对象。
Class clazz = Class.forName(className);
//获取到了指定的构造函数对 象。
Constructor constructor = clazz.getConstructor(String.class,int.class);
Field field = null;//clazz.getField("age");//只能获取公有的,
field = clazz.getDeclaredField("age");//只获取本类,但包含私有。
//对私有字段的访问取消权限检查。暴力访问。
field.setAccessible(true);
Method method = clazz.getMethod("paramMethod", String.class,int.class);
//通过该构造器对象的newInstance方法进行对象的初始化。
Object obj = constructor.newInstance("小明",38);
field.set(obj, 89);
method.invoke(obj, "小强",80);
Person person = (Person)obj;
System.out.println(person.getName()+" "+person.getAge());

3.正则表达式操作
/*
* 正则表达式对字符串的常见操作:
* 1, 匹配。
*
其实使用的就是String类中的matches方法。
*
* 2,切割。
*
其实使用的就是String类中的split方法。
*
* 3,替换。
*
其实使用的就是String类中的replaceAll()方法。
*
* 4,获取。
*
*/

//1, 匹配。
//匹配手机号码是否正确。
String tel = "15800001111";
String regex = "1[358]\\d{9}";
boolean b = tel.matches(regex);
System.out.println(tel+":"+b);

//2,切割。
String str = "zhangsanttttxiaoqiangmmmmmmzhaoliu";
String[] names = str.split("(.)\\1+");//str.split("\\.");
for(String name : names){
System.out.println(name);
//zhangsan
//xiaoqiang
//zhaoliu
}

//3替换
str = str.replaceAll("(.)\\1+", "$1");
System.out.println(str);//zhangsantxiaoqiangmzhaoliu

//4.获取
str = "da jia hao,ming tian bu fang jia!";
regex = "\\b[a-z]{3}\\b";
//1,将正则封装成对象。
Pattern p = Pattern.compile(regex);
//2, 通过正则对象获取匹配器对象。
Matcher m = p.matcher(str);
//使用Matcher对象的方法对字符串进行操作。
//既然要获取三个字母组成的单词
//查找。 find();
System.out.println(str);
while(m.find()){
System.out.println(m.group());//获取匹配的子序列
System.out.println(m.start()+":"+m.end());
}

4.网络爬虫
/*
* 网页爬虫:其实就一个程序用于在互联网中获取符合指定规则的数据。 爬取邮箱地址。
*/
// 1,读取源文件。
//
//BufferedReader bufr = new BufferedReader(new FileReader("c:\\mail.html"));//从本地
URL url = new URL("http://192.168.1.100:8080/myweb/mail.html");
BufferedReader bufIn = new BufferedReader(new InputStreamReader(url.openStream()));
// 2,对读取的数据进行规则的匹配。从中获取符合规则的数据.
String mail_regex = "\\w+@\\w+(\\.\\w+)+";
List<String> list = new ArrayList<String>();
Pattern p = Pattern.compile(mail_regex);
String line = null;
while ((line = bufIn.readLine()) != null) {
Matcher m = p.matcher(line);
while (m.find()) {
// 3,将符合规则的数据存储到集合中。
list.add(m.group());
}
}

 

5.可变参数
public static int add(int x,int ... args){
int sum = x; //如果参数列表没有int x则int sum=0;
for(int arg : args){
sum += arg;
}
return sum;
}
System.out.println(add(2,3));
System.out.println(add(5,6,5));

6.了解和入门注解的应用
@SuppressWarnings("deprecation")//压缩警告,告诉程序说,我知道已经过时了,不提示
@Deprecated//表明该方法已过时
@Override//表明是覆盖方法,如果写错会提示

@SuppressWarnings("deprecation")//压缩警告,告诉程序说,我知道已经过时了,不提示
public static void main(String[] args) throws IOException {
System.out.println(add(2,3));
System.out.println(add(5,6,5));
}

@Deprecated//表明该方法已过时
public static int add(int x,int ... args){
int sum = x; //如果参数列表没有int x则int sum=0;
for(int arg : args){
sum += arg;
}
return sum;
}
@Override//表明是覆盖方法,如果写错会提示
public String toString() {
return super.toString();
}

 

7.使用Eclipse的Debug功能
Step Over(F6):跳过,执行下一步
Step Into(F5): 跳入,进入执行的方法内部
Step Return(F7):跳出,跳出当前执行的方法
Resume(F8):跳入到下一个断点,如果没有直接结束

 

posted @ 2014-11-20 13:35  学亮  阅读(215)  评论(0编辑  收藏  举报