javaWeb学习之旅(一)------------java基础知识增强

来源:互联网 发布:下載外帀手機软件 编辑:程序博客网 时间:2024/06/05 05:16

一、java基础

1.文件的复制

debug调试
F5: step into 
F6:  step over 
F7:  step return

思路如下:


java实现的方法如下

public class Demo1 {@Testpublic static void main(String[] args) {String file1 = "F:\\test1.txt";String file2 = "F:\\test.txt";try {// 复制copy(file1, file2);System.out.println("文件2拷贝成功");} catch (Exception e) {// TODO: handle exception}}private static void copy(String file1, String file2) throws Exception {// 以流的形式读入文件1中的内容InputStream inputStream = readFile(file1);writetoFile(inputStream, file2);}private static void writetoFile(InputStream inputStream, String file2)throws IOException {// TODO Auto-generated method stub// 如果文件2不存在,则创建文件2if (!existFile(file2)) {File file = new File(file2);file.createNewFile();}// 打开文件2 的输出流FileOutputStream fileOutputStream = new FileOutputStream(file2);intout(inputStream, fileOutputStream);}// 从buffer中读入并写入文件2中private static void intout(InputStream inputStream,FileOutputStream fileOutputStream) {try {int len = 0;byte buffer[] = new byte[1024];while ((len = inputStream.read(buffer)) > 0) {fileOutputStream.write(buffer, 0, len);}} catch (Exception e) {// TODO: handle exception} finally {if (inputStream != null) {try {inputStream.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if (fileOutputStream != null) {try {fileOutputStream.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}// TODO Auto-generated method stub}// 读文件private static InputStream readFile(String file1)throws FileNotFoundException {// TODO Auto-generated method stub// 判断文件1存在if (!existFile(file1)) {throw new FileNotFoundException("指定的文件不存在");}// 向输入流中读文件FileInputStream inputStream = new FileInputStream(file1);return inputStream;}// 判断文件是否存在private static boolean existFile(String existfile) {// TODO Auto-generated method stubFile file = new File(existfile);if (file.exists()) {return true;}return false;}}


2.eclipse 快捷键

ctrl + shift + O         导包
ctrl + shift + F         格式化代码
ctrl + shift + X         更改为大写              
ctrl + shift + Y         更改为小写       
ctrl + shift + 向下键    复制行
ctrl + shift + T         查看类的源代码
Alt  + 方向键            向前向后
ctrl + /                 注释
F2                       查看方法说明
ctrl + T                 查看类的继承关系
ctrl + 1                 快速修复
Alt  +  /                   内容不全


3.junit测试类

在类的方法前添加@Test 可以用junit的测试类的输出
//每个测试方法运行之前、之后运行   @Before    @After
设置断言  
// 断言 测试返回值是否是期望的返回值
        Assert.assertEquals("1", person.run());

public class Person {public String run(){System.out.println("run");return "1";}public void eat(){System.out.println("eat");}}

public class Demo4 {Person person;//每个测试方法运行之前运行@Beforepublic void before() {person = new Person();System.out.println("before");}@Testpublic void testrun() {person.run();//断言 测试返回值是否是期望的返回值        Assert.assertEquals("1", person.run());}@Testpublic void testeat() {person.eat();}@Afterpublic void after() {System.out.println("after");}}

4.装箱和拆箱

public class Demo5 {public static void main(String[] args) {Integer i = 1;// 装箱int j = i; // 拆箱// 典型应用ArrayList list = new ArrayList();list.add(1);list.add(2);list.add(3);Iterator iterator = list.iterator();while (iterator.hasNext()) {int k = (Integer) iterator.next(); // 拆箱}}}

5.for循环


Map.Entry entry = (Entry) iterator.next();
具有如下两个方法

entry.getKey(); entry.getValue();
而map只有get();方法
String key = (String) obj;
String value = (String) map.get(key);



public class Demo6 {@Testpublic void test1() {int arr[] = { 1, 2, 3 };for (int num : arr) {System.out.println(num);}}@Testpublic void test2() {ArrayList list = new ArrayList();list.add(1);list.add(2);list.add(3);for (Object obj : list) {int i = (Integer) obj;System.out.println(i);}}@Testpublic void test3() {Map map = new LinkedHashMap();map.put("1", "aaa");map.put("2", "bbb");map.put("3", "ccc");// 传统方式1Set set = map.keySet();Iterator iterator = set.iterator();while (iterator.hasNext()) {String key = (String) iterator.next();String value = (String) map.get(key);System.out.println(key + "=" + value);}}@Testpublic void test4() {Map map = new LinkedHashMap();map.put("1", "aaa");map.put("2", "bbb");map.put("3", "ccc");// 传统方式 2Set set = map.entrySet();Iterator iterator = set.iterator();while (iterator.hasNext()) {Map.Entry entry = (Entry) iterator.next();String key = (String) entry.getKey();String value = (String) entry.getValue();System.out.println(key + "=" + value);}}@Testpublic void test5() {Map map = new LinkedHashMap();map.put("1", "aaa");map.put("2", "bbb");map.put("3", "ccc");// 增强for循环for (Object obj : map.keySet()) {String key = (String) obj;String value = (String) map.get(key);System.out.println(key + "=" + value);}}@Testpublic void test6() {Map map = new LinkedHashMap();map.put("1", "aaa");map.put("2", "bbb");map.put("3", "ccc");// 增强for循环for (Object obj : map.entrySet()) {Map.Entry entry = (Entry) obj;String key = (String) entry.getKey();String value = (String) entry.getValue();System.out.println(key + "=" + value);}}
6.可变参数

                //如果声明的是int 则不行,//会报错,Arrays.asList 接受传递的是一个对象Integer nums[]={1,2,3,4,5};list=Arrays.asList(nums);System.out.println(list);

public class Demo7 {@Testpublic void testsum() {sum(1, 2, 3, 4, 5);}public void sum(int... nums) {// 可以把可变参数看出数组// 可以前面是一个定参,后面是一个可变参数// public void sum(int x,int... nums)int sum = 0;for (int i : nums) {sum += i;}System.out.println(sum);}@Testpublic void canshu(){//asList 接受传递的是一个对象List list=Arrays.asList("1","2","3");System.out.println(list);String arr[]={"1","2","3","4"};list=Arrays.asList(arr);System.out.println(list);//如果声明的是int 则不行,//会报错,Arrays.asList 接受传递的是一个对象Integer nums[]={1,2,3,4,5};list=Arrays.asList(nums);System.out.println(list);}}


7.反射

反射就是加载类,并解剖出类的各个组成部分,主要运用于框架中

反射 加载类 有3中方法如下

 //1,这个方法貌似有问题

Class class1 = Class.forName("/day01/src/com/nyist/wj/Person");
  // 2
  Class class2 = new Person().getClass();
  // 3
  Class class3 = Person.class;

 

// 暴力反射、
  constructor.setAccessible(true);

可以利用反射的机制实现访问私有的方法 publicprivate构造函数getConstructor()getDeclaredConstructor()构造方法getMethod()getDeclaredMethod()字段getField()getDeclaredField()

    

   /**
  * 反射类的public  构造方法
  * **/

// 、public Person(String name,int password)@Testpublic void test3() throws Exception {Class class2 = Person.class;Constructor constructor = class2.getConstructor(String.class, int.class);Person person = (Person) constructor.newInstance("dddddd", 12);System.out.println(person.name);}

/**
  * 反射类的private  构造方法
  * **/

@Test// 暴力反射私有的构造函数 private Person(List list)public void test4() throws Exception {Class class4 = Person.class;Constructor constructor = class4.getDeclaredConstructor(ArrayList.class);// 暴力反射、constructor.setAccessible(true);Person person = (Person) constructor.newInstance(new ArrayList());System.out.println(person.name);}


/**
  * 反射类的public 构造函数
  * **/

@Test// public void test1(String name, int passward)public void fun1() throws Exception {Class class1 = Person.class;Method method = class1.getMethod("test1", String.class, int.class);Person person = new Person();method.invoke(person, "wangjie", 23);}

/**
  * 反射类的private  构造函数
  * **/

@Test// private void test1(InputStream inputStream)public void fun3() throws Exception {Class class1 = Person.class;Method method = class1.getDeclaredMethod("test1", InputStream.class);//暴力反射method.setAccessible(true);Person person = new Person();method.invoke(person, new FileInputStream("c:\\1.txt"));}



/**
  * 反射类的private   static 构造函数
  * **/

@Test// 静态的方法不需要对象// private static void test1(int num)public void fun4() throws Exception {Class class1 = Person.class;Method method = class1.getDeclaredMethod("test1", int.class);method.invoke(null, 23);}


/****
  *
  * 反射public 字段
  * *****/

//public String name="wangjie";public void ziduan() throws Exception {Class class1 = Person.class;Field field = class1.getField("name");Person person = new Person();String name = (String) field.get(person);// System.out.println(name);// 获取字段的值Object value = field.get(person);// 获取字段的类型Class typeClass = field.getType();if (typeClass.equals(String.class)) {String svalueString = (String) value;System.out.println(svalueString);}field.set(person, "ddddd");System.out.println(person.name);}


/****
  *
  * 反射private  字段
  * *****/

@Test// private int password=123456public void ziduan1() throws Exception {Class class1 = Person.class;Field f = class1.getDeclaredField("password");Person person = new Person();// 暴力反射、f.setAccessible(true);System.out.println(f.get(person));}


 Demo如下:

 

package com.nyist.wj;import java.awt.List;import java.io.FileInputStream;import java.io.InputStream;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.jar.Attributes.Name;import org.junit.Test;public class Demo8 {/** * 反射类的构造方法 * **/// 反射 无参的构造函数 public Person()@Testpublic void test1() throws Exception {Class class1 = new Person().getClass();Constructor constructor = class1.getConstructor(null);Person person = (Person) constructor.newInstance(null);System.out.println(person.name);}// public Person(String name)@Testpublic void test2() throws Exception {Class class2 = Person.class;Constructor constructor = class2.getConstructor(String.class);Person person = (Person) constructor.newInstance("dddddd");System.out.println(person.name);}// 、public Person(String name,int password)@Testpublic void test3() throws Exception {Class class2 = Person.class;Constructor constructor = class2.getConstructor(String.class, int.class);Person person = (Person) constructor.newInstance("dddddd\n", 12);System.out.println(person.name);}@Test// 暴力反射私有的构造函数 private Person(List list)public void test4() throws Exception {Class class4 = Person.class;Constructor constructor = class4.getDeclaredConstructor(ArrayList.class);// 暴力反射、constructor.setAccessible(true);Person person = (Person) constructor.newInstance(new ArrayList());System.out.println(person.name);}/** * 反射类的构造函数 * **/@Test// public void test1()public void fun() throws Exception {Class class1 = Person.class;// method获得方法Method method = class1.getMethod("test1", null);Person person = new Person();method.invoke(person, null);}@Test// public void test1(String name, int passward)public void fun1() throws Exception {Class class1 = Person.class;Method method = class1.getMethod("test1", String.class, int.class);Person person = new Person();method.invoke(person, "wangjie", 23);}@Test// public Class[] test1(String name, int[] password)public void fun2() throws Exception {Class class1 = Person.class;Method method = class1.getMethod("test1", String.class, int[].class);Person person = new Person();Class array[] = (Class[]) method.invoke(person, "wangjie", new int[] {1, 2, 3 });System.out.println(array[1]);}@Test// private void test1(InputStream inputStream)public void fun3() throws Exception {Class class1 = Person.class;Method method = class1.getDeclaredMethod("test1", InputStream.class);//暴力反射method.setAccessible(true);Person person = new Person();method.invoke(person, new FileInputStream("c:\\1.txt"));}@Test// 静态的方法不需要对象// private static void test1(int num)public void fun4() throws Exception {Class class1 = Person.class;Method method = class1.getDeclaredMethod("test1", int.class);method.invoke(null, 23);}@Test// public static void main(String[] args)public void fun5() throws Exception {Class class1 = Person.class;Method method = class1.getDeclaredMethod("main", String[].class);// method.invoke(null, new Object[]{new String[]{"aa","ggg"}});// 或者method.invoke(null, (Object) new String[] { "ss", "ss" });}@Test/**** *  * 反射字段 * *****///public String name="wangjie";public void ziduan() throws Exception {Class class1 = Person.class;Field field = class1.getField("name");Person person = new Person();String name = (String) field.get(person);// System.out.println(name);// 获取字段的值Object value = field.get(person);// 获取字段的类型Class typeClass = field.getType();if (typeClass.equals(String.class)) {String svalueString = (String) value;System.out.println(svalueString);}field.set(person, "ddddd");System.out.println(person.name);}@Test// private int password=123456public void ziduan1() throws Exception {Class class1 = Person.class;Field f = class1.getDeclaredField("password");Person person = new Person();// 暴力反射、f.setAccessible(true);System.out.println(f.get(person));}@Test// private static int age=23;public void ziduan2() throws Exception {Class class1 = Person.class;Field f = class1.getDeclaredField("password");Person person = new Person();// 暴力反射、f.setAccessible(true);System.out.println(f.get(person));}}


Person类如下:

package com.nyist.wj;import java.io.InputStream;import java.util.ArrayList;public class Person {//反射字段public String name="wangjie";private int password=123456;private static int age = 23;/** * 反射类的构造函数 * **/public Person() {System.out.println("person");}public Person(String name) {System.out.println(name);}public Person(String name, int password) {System.out.println(name + ":" + password);}private Person(ArrayList list) {System.out.println(list);}/** * 反射类的构造方法 * **/public void test1() {System.out.println("test");}public void test1(String name, int passward) {System.out.println(name + "" + passward);}public Class[] test1(String name, int[] password) {return new Class[] { String.class };}private void test1(InputStream inputStream) {System.out.println(inputStream);}private static void test1(int num) {System.out.println(num);}public static void main(String[] args) {System.out.println("main.....");}// 以下代码用于Demo4中public String run() {System.out.println("run");return "1";}public void eat() {System.out.println("eat");}}


8.内省操作javabean的属性

Demo如下

public class Demo9 {// 得到bean的所有属性@Testpublic void test1() throws IntrospectionException {// 得到bean的自己是属性BeanInfo info = Introspector.getBeanInfo(student.class, Object.class);PropertyDescriptor[] pds = info.getPropertyDescriptors();for (PropertyDescriptor pd : pds) {System.out.println(pd.getName());}}// 操作bean的制定属性@Testpublic void test2() throws Exception {PropertyDescriptor pd = new PropertyDescriptor("age", student.class);student stu = new student();// 得到属性的写方法,为属性赋值Method method = pd.getWriteMethod();method.invoke(stu, 23);// 获取属性的值method = pd.getReadMethod();System.out.println(method.invoke(stu, null));}// 高级属性,获取当前属性的类型@Testpublic void test3() throws Exception {PropertyDescriptor pd = new PropertyDescriptor("age", student.class);student stu = new student();// 得到属性的写方法,为属性赋值System.out.println(pd.getPropertyType());}}

 

Studet.java如下

 

package com.nyist.wj;public class student {private String name;private String passward;private int age;//本实例工有5个属性 隐藏的一个是objectpublic String getab() {return null;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassward() {return passward;}public void setPassward(String passward) {this.passward = passward;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}

9.泛型的使用

测试的例子如下:

@Testpublic void test1() {List<String> list = new ArrayList<String>();list.add("qq");list.add("ghg");list.add("eee");// 传统Iterator<String> iterator = list.iterator();while (iterator.hasNext()) {String value = iterator.next();System.out.println(value);}// 增强for循环for (String string : list) {System.out.println(string);}}


还有...

@Testpublic void test2() {Map<Integer, String> map = new HashMap<Integer, String>();map.put(1, "hhhh");map.put(2, "eeee");map.put(3, "hhhh");// 传统keyset entrysetSet<Map.Entry<Integer, String>> set = map.entrySet();Iterator<Map.Entry<Integer, String>> iterator = set.iterator();while (iterator.hasNext()) {Map.Entry<Integer, String> entry = (Map.Entry<Integer, String>) iterator.next();int key = entry.getKey();String value = entry.getValue();System.out.println(key + " " + value);}// 增强for循环的方法(重点)for (Map.Entry<Integer, String> entry : map.entrySet()) {int key = entry.getKey();String value = entry.getValue();System.out.println(key + " " + value);}}

 工程包下载地址:http://download.csdn.net/detail/wjky2014/5220360


 




  

原创粉丝点击