自学看视频增强java基础

首先,先谈谈人生。生活总是那么不尽人意,刚刚毕业快1年,在学校学的又是Android开发,实习却做得net,现在做的是android,也许可能未来做的是java。记得,刚出学校就要走上社会,找工作一个字“难”!再加上自己没有很好的学历,看看北上广这些大城市的群里天天在说Android 行情不行,招个Android和招全栈工程师没有啥区别!尼玛!我的天!对于,一个刚刚毕业不到1年的程序员来说,身边的好朋友工资蹭蹭的往上涨,自己还是3.5k去掉五险一金到手也才不到3K,朋友圈天天谈论着房子的事,好苦逼,那么又有什么办法呢?既然你不能改变世界,那就得先改变自己。也许,会有人说:“你这个也学,那个也学。到最后,肯定一事无成!”在此,我只想说,你试过吗?你说这个有用吗?你为什么这么说?我是个95后,当我辞掉第一份关于专业的工作的时候(而且还是裸辞),有个同事说我“任性“。确实,自己是那么太过年轻,任性了把。有个同事是我实习的师傅,他说做技术得慢慢经历,我经历的太少了,做技术得从积累再不断的沉淀。虽然,我现在做的Android,但每天晚上依然坚持回家不搞项目上的事,回家就是学学干干(白天干活,晚上学).这是,我对我之前经历的一个小结。人生不如意,我们就来提高自己的技术去适应社会,以下这些是我看传智播客视频学的java基础增强的知识点!2017年,加油!

============================================================

Java基础知识增强:

1.java运行环境的配置  编译器编译(如果碰到bad version,要么在菜单属性下改运行环境build path,要么改编译环境 java complier)

代码:

public class Demo1 {

	/**
	 * java运行环境的配置
	 * 编译器编译(如果碰到bad version,要么在菜单属性下改运行环境build path,要么改编译环境 java complier)
	 */
	public static void main(String[] args) {
	
		System.out.println("hello java!");

	}
}

总结:编译环境要和运行环境一样版本

=====================================================================

2.调试的方法

public class Demo2 {

	/**
	 * F5  跳入
	 * F6 往下走
	 * F7 跳出
	 * drop to frame 跳到代码中该方法第一行
	 * resume 绿色小三角是跳到下一段点
	 * 在debug模式下  点击breakpoints 可以显示所有断点 点叉消除断点
	 * 在断点调试时,记得点击红色小方框  停止虚拟机运行
	 * watch 观察变量或者表达式的值
	 */
	
}

=======================================================================

3.before()和after()

代码:

新建一个Person类,包含两个方法 run() 和eat()

public class Person {

	public String run(){
		System.out.println("run");
		return "1";
	}
	public void eat(){
		System.out.println("eat");
	}
}
测试类

/**
 * Person测试类
 *
 */
public class Demo4 {

	Person person;
	@Before
	public void before() {
		System.out.println("before");
		person = new Person();
	}

	@Test
	public void testRun() {
		person.run();
	}

	@Test
	public void testEat() {
		person.eat();
	}

	@After
	public void after() {
		System.out.println("after");
		person = null;
	}

}
==================================================================
4.BeforeClass  在类加载的时候运行,用于初始化资源
代码:

public class Demo5 {
	
	/**
	 * @BeforeClass  在类加载的时候运行,用于初始化资源
	 */
	@BeforeClass
	public static void beforeclass() {
		System.out.println("beforeclass");
	
	}

	@Test
	public void testRun() {
		Person person = new Person();
		person.run();
	}

	@Test
	public void testEat() {
		Person person = new Person();
		person.eat();
	}

	@AfterClass
	public static void afterclass() {
		System.out.println("afterclass");
	}
}

总结:

1.before()和after()每次运行test的时候都会执行一次

效果:

before
eat
after
before
run
after

2.BeforeClass和afterclass 在类加载的时候运行,用于初始化资源

效果:

beforeclass
eat
run
afterclass

==================================================================

5.断言(测试用的)

public class Demo6 {
	
	@Test
	public void testRun() {
		Person person = new Person();
		//断言
		Assert.assertEquals("1", person.run());
	}

	@Test
	public void testEat() {
		Person person = new Person();
		person.eat();
	}
}
====================================================================
6.枚举

代码:

/**
 * 枚举
 * @author Boom
 *
 */
public class Demo1 {

	@Test
	public void test() {
		print(Grade.C);
	}

	public void print(Grade g) { // A B C D E
		String value =g.getValue();
		System.out.println(value);
	}

	/*
	 * static class Grade { private Grade() { } public final static Grade A =
	 * new Grade(); public final static Grade B = new Grade(); public static
	 * final Grade C = new Grade(); public static final Grade D = new Grade();
	 * public static final Grade E = new Grade(); }
	 */

	enum Grade {
		//相当于类中的不同对象
		//A 100-90
		//B 90-80
		//C 80-70
		//D 70-60
		//E 60-0
		A("100-90"), B("90-80"), C("80-70"), D("70-60"), E("60-0");
		
		private String value;
		private Grade(String value){
			this.value=value;
		}
		public String getValue(){
			return this.value;
		}
	}
}

效果:

80-70

==================================================================

7.抽象方法枚举

/**
 * 抽象方法枚举
 * 
 * @author Boom
 *
 */
public class Demo1 {

	@Test
	public void test() {
		print(Grade.C);
	}
	
	@Test
	public void test2(){
		//输出名字
		System.out.println(Grade.C.name());
		//输出序数
		System.out.println(Grade.C.ordinal());
		
		String str= "B"; //如果是String str= "Y"会报错,因为不再枚举中,用于验证表单提交的数据是否属于枚举中的数据
		//Grade g = Grade.valueOf(Grade.class,str);
		Grade g = Grade.valueOf(str);
		System.out.println(g);
		
		Grade gs[] = Grade.values();
		for(Grade g1: gs){
			System.out.println(g1);
		}
 	}
	

	public void print(Grade g) { // A B C D E
		String value = g.localValue();
		System.out.println(value);
	}

	/*
	 * static class Grade { private Grade() { } public final static Grade A =
	 * new Grade(); public final static Grade B = new Grade(); public static
	 * final Grade C = new Grade(); public static final Grade D = new Grade();
	 * public static final Grade E = new Grade(); }
	 */

	enum Grade {
		// 相当于类中的不同对象
		// A 100-90 优
		// B 90-80 良
		// C 80-70 一般
		// D 70-60 差
		// E 60-0 不及格
		//让具体对象实现
		A("100-90") {
			public String localValue() {
				return "优";
			}
		}
		,
		B("90-80") {
			public String localValue() {
				return "良";
			}
		}
		,
		C("80-70") {
			public String localValue() {
				return "一般";
			}
		}
		,
		D("70-60") {
			public String localValue() {
				return "差";
			}
		}
		,
		E("60-0") {
			public String localValue() {
				return "不及格";
			}
		};

		private String value; //封装每个对象对应的分数
		//枚举的构造函数必须是私有的,避免能新建对象(new 一个对象)
		private Grade(String value) {
			this.value = value;
		}

		public String getValue() {
			return this.value;
		}
		
		//定义抽象方法
		public abstract String localValue();
		
	}
	
	//用单态设计模式定义出一个类
	enum A{ //class
		A;	//object
	}
}
效果

一般
C
2
B
A
B
C
D
E

================================================================

8.内省

代码:

新建一个person类

public class Person {
	private String name;
	private String password;
	private int age;
	
	//这个类有多少属性  不是由上面决定的,而是由get set方法决定的,这个类中有5个属性 还有一个getClass()
	public String getAb(){
		return null;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}
新建测试类

/**
 * 使用内省api操作bean的属性
 */

public class Demo1 {
	
	@Test
	public void test1() throws Exception{
		//获取bean的所有属性
		BeanInfo beaninfo = Introspector.getBeanInfo(Person.class);
		//去掉父类的属性  得到bean自己的属性
		BeanInfo beaninfo1 = Introspector.getBeanInfo(Person.class,Object.class);
		
		PropertyDescriptor[] pds = beaninfo.getPropertyDescriptors();
		for(PropertyDescriptor pd : pds){
			System.out.println(pd.getName());
		}
	}
	
	//用于架构的设计,一般传统方式不用
	@Test
	public void test2() throws Exception{
		Person person = new Person();
		PropertyDescriptor pd=new PropertyDescriptor("age",Person.class);
		//得到属性的写方法,为属性赋值
		Method method = pd.getWriteMethod();
		method.invoke(person, 45);
		System.out.println(person.getAge());
		//获取属性的值
		method =pd.getReadMethod();
		System.out.println(method.invoke(person, null));
	}
	
	//高级点的内容,获取当前操作的属性的类型
	@Test
	public void test3() throws Exception{
		Person person = new Person();
		//获取属性的描述器
		PropertyDescriptor pd=new PropertyDescriptor("age",Person.class);
		System.out.println(pd.getPropertyType());
	}
	
}
========================================================================
9.静态导入包

import static java.lang.System.out;
/**
 * 静态导入包
 */
public class Demo1 {
	public static void main(String[] args) {
		out.println("哈哈");
	}
}
10.装箱/拆箱

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

11.增强for循环只能运用到数组,集合

代码:

public class Demo3 {
	/**
	 * 增强for循环
	 * 只能运用到数组,集合
	 */
	@Test
	public void test1(){
		int arr[] ={1,2,3};
		for(int num :arr ){
			System.out.println(num);
		}	
	}
	@Test
	public void test2(){
		List list=new ArrayList();
		list.add(1);
		list.add(2);
		list.add(3);
		
		for(Object object : list){
			int i =(int) object;
			System.out.println(i);
		}
	}
	
	@Test
	public void test3(){
		Map map = new LinkedHashMap();
		map.put("1", "aaa");
		map.put("2", "bbb");
		map.put("3", "ccc");
		
		//传统方式1
		Set set= map.keySet();
		Iterator it=set.iterator();
		while(it.hasNext()){
			String key =(String) it.next();
			String value =(String) map.get(key);
			System.out.println(key+"="+value);
		}
	}
	
	@Test
	public void test4(){
		Map map = new LinkedHashMap();
		map.put("1", "aaa");
		map.put("2", "bbb");
		map.put("3", "ccc");
		//传统方式2
		Set set =map.entrySet();
		Iterator it =set.iterator();
		while (it.hasNext()) {
			Map.Entry entry = (Entry) it.next();
			String key =(String) entry.getKey();
			String value=(String) entry.getValue();
			System.out.println(key+"="+value);
		}
		
	}
	@Test
	public void test5(){
		Map map = new LinkedHashMap();
		map.put("1", "aaa");
		map.put("2", "bbb");
		map.put("3", "ccc");
		//增强for取map的第一种方式
		for(Object object:map.keySet()){
			String key = (String) object;
			String value =(String) map.get(key);
			System.out.println(key+"="+value);
		}
	}
	
	@Test
	public void test6(){
		Map map = new LinkedHashMap();
		map.put("1", "aaa");
		map.put("2", "bbb");
		map.put("3", "ccc");
		//增强for取map的第2种方法
		for(Object object :map.entrySet()){
			Map.Entry entry =(Entry) object;
			String key =(String) entry.getKey();
			String value =(String) map.get(key);
			System.out.println(key+"="+value);
			
		}
	}
	
	//使用增强for循环需要注意的问题
	//1.只适合取数据
	//2.要修改数组或者集合中的数据,我们只能用传统方式来修改
	@Test
	public void test7(){
		int arr[] ={1,2,3};
		for(int i :arr){
			i=10;
		}
		System.out.println(arr[0]);
		System.out.println(arr[1]);
		System.out.println(arr[2]);
	
	List list =new ArrayList();
	list.add("1");
	for(Object object : list){
		object="10";
	}
	System.out.println(list.get(0));
	}
}
总结:map集合有两种处理方法:

1.转换为set集合

2.转换为Map.Entry<k,v>

并且for的增强式只能取值,不能修改(因为hascode不一样)

======================================================================

12.可变参数  ...

代码:

/**
 * 可变参数
 * @author Boom
 *
 */
public class Demo4 {

	@Test
	public void testSum(){
		//sum(1,2,3,4,5,6);
		int arr[] ={1,2,3,4,5,6};
		sum(arr);
	}
	
	public void sum(int ...nums){
		//可变参数你就把它看成数组
		int Sum=0;
		for(int i : nums){
			Sum+=i;
		}
		System.out.println(Sum);
	}
	
	@Test 
	public void Aa(){
		aa(1,2,3,4,5,6);
	}
	//可变参数需要注意的是:public void  aa(int ...nums,int x)  这样不行
	public void  aa(int x,int ...nums) {
		
	}
	
	@Test
	public void bb(){
		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 nums[]={1,2,3,4,5};//这个细节一定要注意 Integer nums[]={1,2,3,4,5}; 
		list = Arrays.asList(nums);
		System.out.println(list);

	}
}
===================================================================

13.反射,加载类 ,获得类的字节码

代码:

新建Person类

public class Person {
	public String name="aaaa";
	private int password;
	private static int age;
	//Date 不是8种数据类型之一
	private Date birthday;
	public Date getBirthday() {
		return birthday;
	}

	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getPassword() {
		return password;
	}

	public void setPassword(int password) {
		this.password = password;
	}

	public static int getAge() {
		return age;
	}

	public static void setAge(int age) {
		Person.age = age;
	}

	//构造函数
	public Person() {
		System.out.println("person");
	}

	public Person(String name) {
		System.out.println("person name is "+name);
	}

	public Person(String name, int password) {
		System.out.println(name+";"+password);
	}

	private Person(List list) {
		System.out.println("person list");
	}
	//方法
	public void aa1(){
		System.out.println("aa1");
	}
	public void aa1(String name,int password){
		System.out.println(name+";"+password);
	}
	
	public Class[] aa1(String name,int[] password ){
		return new Class[]{String.class};
	}
	
	private void aa1(InputStream in){
		System.out.println(in);
	}
	
	public static void aa1(int num){
		System.out.println(num);
	}
	
	public static void main(String[] args) {
		System.out.println("main!");
	}
}


测试类:

/**
 *	反射,加载类 ,获得类的字节码
 */
public class Demo1 {

	public static void main(String[] args) throws ClassNotFoundException {
		//1.反射
		Class clazz =Class.forName("com.boom.reflect.Person");
		//2.加载类
		Class clazz1 = new Person().getClass();
		//3.获得类的字节码
		Class clazz2 = Person.class;
		
	}
}
===================================================================
14.解剖类的构造函数,创建类的对象

代码:

/**
 * 解剖类的构造函数,创建类的对象
 * 
 * @author Boom
 *
 */
public class Demo2 {

	// 反射构造函数,public person(){}
	@Test
	public void test() throws Exception {
		Class clazz = Class.forName("com.boom.reflect.Person");
		Constructor c = clazz.getConstructor(null);
		Person person = (Person) c.newInstance(null);
		System.out.println(person.name);
	}
	// 反射构造函数,public Person(String name) {
		@Test
		public void test2() throws Exception {
			Class clazz = Class.forName("com.boom.reflect.Person");
			//得到构造函数  由于构造函数里面是 String name
			Constructor c = clazz.getConstructor(String.class);
			Person person = (Person) c.newInstance("xxxx");
			System.out.println(person.name);
		}
		// 反射构造函数,public Person(String name, int password) {
		@Test
		public void test3() throws Exception {
			Class clazz = Class.forName("com.boom.reflect.Person");
			Constructor c = clazz.getConstructor(String.class,int.class);
			Person person = (Person) c.newInstance("xxxx",123);
			System.out.println(person.name);
		}
		// 反射构造函数,private Person(List list) {
		@Test
		public void test4() throws Exception {
			Class clazz = Class.forName("com.boom.reflect.Person");
			Constructor c = clazz.getDeclaredConstructor(List.class); //因为构造函数是私有的
			c.setAccessible(true);//暴力反射
			Person person = (Person) c.newInstance(new ArrayList<>());
			System.out.println(person.name);
		}
		
		/**
		 * 一个类内部私有的东西不能被外界访问,但是我们可以通过反射来实现
		 * getConstructor() 得到定义为public的构造方法,method和field同理
		 * getDeclaredConstructor() 得到定义为private的构造方法,method和field同理
		 */
		
		//创建对象的另外一种途径
		@Test
		public void test5() throws Exception {
			Class clazz = Class.forName("com.boom.reflect.Person");
			Person person = (Person) clazz.newInstance();
			System.out.println(person);
		}
}

===================================================================

15. 反射类的方法

/**
 * 反射类的方法
 * @author Boom
 *
 */
public class Demo3 {
	
	//反射类的 public void aa1(){
	@Test
	public void test1() throws Exception{
		Person person =new Person();
		Class clazz = Class.forName("com.boom.reflect.Person");
		//根据方法名来
		Method method =clazz.getMethod("aa1", null);
		//第一个参数是类对象,第二个参数是参数类型
		method.invoke(person,null);
	}
	//反射类的  public void aa1(String name,int password){ 
		@Test
		public void test2() throws Exception{
			Person person =new Person();
			Class clazz = Class.forName("com.boom.reflect.Person");
			//根据方法名来
			Method method =clazz.getMethod("aa1", String.class,int.class);
			//第一个参数是类对象,第二个参数是参数类型是可变参数 ...
			method.invoke(person,"zxx",38);
		}
		//反射类的 public Class[] aa1(String name,int[] password ){
		@Test
		public void test3() throws Exception{
			Person person =new Person();
			Class clazz = Class.forName("com.boom.reflect.Person");
			//根据方法名来
			Method method =clazz.getMethod("aa1", String.class,int[].class);
			//第一个参数是类对象,第二个参数是参数类型
			Class[] cs= (Class[]) method.invoke(person,"aaaa",new int[]{1,2,3});
			System.out.println(cs[0]);
		}
		
		//反射类的   private void aa1(InputStream in){
		@Test
		public void test4() throws Exception{
			Person person =new Person();
			Class clazz = Class.forName("com.boom.reflect.Person");
			//根据方法名来
			Method method =clazz.getDeclaredMethod("aa1", InputStream.class);
			method.setAccessible(true); //暴力反射
			//第一个参数是类对象,第二个参数是参数类型
			method.invoke(person,new FileInputStream("c:\\1.txt"));
		}
		//反射类的   public static void aa1(int num){  
		@Test
		public void test5() throws Exception{
		
			Class clazz = Class.forName("com.boom.reflect.Person");
			//根据方法名来
			Method method =clazz.getMethod("aa1", int.class);
			//第一个参数是类对象,第二个参数是参数类型,因为是static方法所以我们不需要类对象
			method.invoke(null,23);
		}
		
		//总结:private的方法不像public的方法,private需要通过method.setAccessible(true); 曝光一下
		
		//特殊
		
		//反射类的  public static void main(String[] args) {  
		@Test
		public void test6() throws Exception{
		
			Class clazz = Class.forName("com.boom.reflect.Person");
			//根据方法名来
			Method method =clazz.getMethod("main", String[].class);
			//method.invoke(null, new Object[]{new String[]{"1","2"}}); //因为类中没有main(String a,String b)
			method.invoke(null,(Object)new String[]{"aa","bb"});	//因为类中没有main(String a,String b)
		}
		 
		//jdk1.5 method.invoke(String methodName, Object... args)
		//jdk1.4 method.invoke(String methodName, Object obj[])
		//jdk1.4 method.invoke(null,new Object[]{new String[]{"1","2"}});
		
		
}

总结:私有的,得暴力反射下

==============================================================
16.反射字段

代码:

public class Demo4 {
	
	//反射字段  	public String name="aaaa";
	@Test
	public void test1() throws Exception{
		Person person=new Person();
		Class clazz = Class.forName("com.boom.reflect.Person");
		Field field= clazz.getField("name");
		//获得字段的值
		Object value =field.get(person);
		//获得字段的类型
		Class type = field.getType();
		System.out.println(type);
		if (type.equals(String.class)) {
			String svalue = (String) value;
			System.out.println(svalue);
		}
		//设置字段的值
		field.set(person,"xxxxx");
		System.out.println(person.name)
		;
	}
	
	//反射字段 	private int password;
	@Test
	public void test2() throws Exception{
		Person person=new Person();
		Class clazz = Class.forName("com.boom.reflect.Person");
		//因为是private,需要暴力反射
		Field field = clazz.getDeclaredField("password");
		field.setAccessible(true);
		System.out.println(field.get(person));
	}
	//反射字段      private static int age;
		@Test
		public void test3() throws Exception{
			Person person=new Person();
			Class clazz = Class.forName("com.boom.reflect.Person");
			Field field = clazz.getDeclaredField("age");
			field.setAccessible(true);
			System.out.println(field.get(person));
			
		}
}

总结:私有的,得暴力反射下

==============================================================

17.用beanutils来操作bean的属性

其中需要两个jar包,并build path

1.commons-beanutils-1.8.0.jar

2.commons-logging.jar

代码:

/**
 * 用beanutils来操作bean的属性(第三方)
 * @author Boom
 * 需要导入beanutils jar包  和common-logging jar包 支持
 */
public class Demo1 {
	
	@Test
	public void test1() throws IllegalAccessException, InvocationTargetException{
		Person person = new Person();
		BeanUtils.setProperty(person, "name", "xxxx");
		System.out.println(person.getName());
	}
	
	@Test
	public void test2() throws IllegalAccessException, InvocationTargetException{
		String name ="aaaaa";
		String password="1234";
		String age="34";
		String birthday="1980-09-09";
		
		Person person = new Person();
		BeanUtils.setProperty(person,"name",name);
		BeanUtils.setProperty(person,"password",password);
		BeanUtils.setProperty(person,"age",age); //只支持8种基本数据类型
		BeanUtils.setProperty(person, "birthday", birthday); //只支持8种数据类型
		
		System.out.println(person.getName());
		System.out.println(person.getPassword());
		System.out.println(person.getAge());
		System.out.println(person.getBirthday()); //在以前是编译不出来会报错,string--->date类型
	}
	
	//根据test2中string 到 date中会报转换异常
	@Test
	public void test3() throws IllegalAccessException, InvocationTargetException{
		String name ="aaaaa";
		String password="1234";
		String age="34";
		String birthday="1980-09-09";
		
		//为了让日期赋到bean的birthday属性上,我们给beanutils注册一个日期转换器
		ConvertUtils.register(new Converter() {
			
			@Override
			public Object convert(Class type, Object value) {
				if (value == null) {
					return null;
				}
				if (!(value instanceof String)) {
					throw new ConversionException("我只支持String类型的转换");
				}
				String str = (String) value;
				if (str.trim().equals("")) {
					return null;
				}
				
				SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
				try {
					return simpleDateFormat.parse(str);
				} catch (ParseException e) {
					throw new RuntimeException();//异常链不能断
				}
			}
		}, Date.class);
		
		
		Person person = new Person();
		BeanUtils.setProperty(person,"name",name);
		BeanUtils.setProperty(person,"password",password);
		BeanUtils.setProperty(person,"age",age); //只支持8种基本数据类型
		BeanUtils.setProperty(person, "birthday", birthday); //只支持8种数据类型
		
		System.out.println(person.getName());
		System.out.println(person.getPassword());
		System.out.println(person.getAge());
		Date date =person.getBirthday();
		System.out.println(date.toLocaleString());
	}
	
	@Test
	public void test4() throws IllegalAccessException, InvocationTargetException{
		String name ="aaaaa";
		String password="1234";
		String age="34";
		String birthday="1980-09-09";
		
		//如果要看转换器,就去看文档中convert
		ConvertUtils.register(new DateLocaleConverter(), Date.class);
		
		Person person = new Person();
		BeanUtils.setProperty(person,"name",name);
		BeanUtils.setProperty(person,"password",password);
		BeanUtils.setProperty(person,"age",age); //只支持8种基本数据类型
		BeanUtils.setProperty(person, "birthday", birthday); //只支持8种数据类型
		
		/*Map map =new HashMap();
		map.put("name", "");
		map.put("password", "123");
		map.put("age", "11");
		map.put("birthday", "1980-09-09");
		//把map集合中的值,填充bean,个人感觉可以以后用到界面展示数据
		BeanUtils.populate(person, map);*/
		
		System.out.println(person.getName());
		System.out.println(person.getPassword());
		System.out.println(person.getAge());
		System.out.println(person.getBirthday()); //在以前是编译不出来会报错,string--->date类型
	}	
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值