java中的就近原则、方法中值传递和引用传递的区别、什么是构造方法、this关键字用法、什么是封装

你知道java中的就近原则嘛?

package com.Test.java;
/**
 * 
 * 在java里面有一个“就近原则”详情可以参照下面代码
 *
 */

public class Actor {
	private String name;
	
	public void  act1(){
		String name = "周润发";
		System.out.println(name);    //周润发      在java里面有一个就近原则所以这个是局部变量里面的name所以是周润发
		System.out.println(this.name); //范冰冰    这个是this指定的 所以是范冰冰
	}
	
	public void act2(){
		System.out.println(name);   //范冰冰        这个  act1方法里面没有访问  所以只能参照 成员变量里面的name 所以也是范冰冰
	}
	public void setName(String name){
		this.name = name;
	}
	public String getName(){
		return this.name;
	}

}

下面是测试类代码

package com.Test.java;
/**
 * 
 * 测试类
 *
 */

public class ActorTest {
	public static void main(String [] args){
		Actor ac = new Actor();
		ac.setName("范冰冰");
		ac.act1();
		ac.act2();
		
	}

}

你知道方法中值传递和引用传递的区别吗?

值传递1.

  package com.Test.java;
    /**
     * 
     * 值传递(下面例子中  min方法中的i地址和m1方法中的i存放的地址不一样  所以说  当印出来会有两个不同的结果)
     *
     */
    
    public class ChuanDi {
    	public static void m1(int i){
    		i = i+1 ;
    		System.out.println("m1中的i="+i);  //  打印出来 i = 11
    	}
    	public static void main (String [] args){
    		int i = 10;
    		m1(i);
    		System.out.println("min方法中的i="+i); //   打印出来 i = 10
    	}
    
    }

引用传递2.

package com.Test.java;
/**
 * 
 * 引用传递
 *
 */

public class ChuanDi01 {
	private int age ;
	public void setAge(int _age){
		age = _age;
	}
		public int getAge(){
		return age;
	}

}
package com.Test.java;
/**
 * 
 * 引用传递      首先将min 方法进行压栈,压栈完成之后    创建了一个对象,在堆内存中给其分配了一块空间,
 * 然后c指向空间地址,然后再min方法中给age赋值变成了20,刚开始age是20然后调用m1方法将20传递了过去,
 * 传递过去之后两个还是指向同一个堆内存的地址,所以在m1当方里面进行了改变之后,他们共同指向的就发生了改变 
 * 所以说min方法里面的值也会发生改变。
 *
 */

public class ChuanDi02 {
	public static void m1(ChuanDi01 c){
		int age = c.getAge();
		c.setAge(++age);
		System.out.println("m1方法中的age="+c.getAge());
	}
	
	
	public  static void main(String [] args){
		ChuanDi01 c = new ChuanDi01();
		c.setAge(20);
		m1(c);
		System.out.println("min方法中的age ="+c.getAge());
		
	}
}

你知道什么是构造方法吗?

package com.Test.java;
/**
 * 构造方法(constructor),有的地方叫做构造器或者构造函数
 * 构造方法的作用是给对象的数据进行初始化。
 * 
 * 
 * 构造方法格式特点
 *  1.方法名与类名相同(注意大小写和类名一致)
 *  2.没有返回值类型。
 *  3.没有void 修饰
 *  4.没有具体的返回值return
 *  5.如果一个类没有提供任何构造方法,系统默认提供无参的构造方法
 *  6.如果一个类已经手动提供了构造方法,那么系统不会再提供人任何构造方法。
 *
 */

public class GouZaoFangFa {
	private String name;
	private int age;
	
	//无参构造
	public GouZaoFangFa(){
		System.out.println("我是构造方法");
	}
	//有参构造
	public GouZaoFangFa(String _name , int _age){
		name = _name;
		age = _age;
	}
	
	public String getName(){
		return name;
	}
	public void setName(String _name){
		name = _name;
	}
	public int getAge(){
		return age;
	}
	public void setAge(int _age){
		age = _age;
	}

}

下面是构造方法测试类

  package com.Test.java;
    /**
     * 
     * 构造方法测试类
     *
     */
    
    public class GouZaoFangFaTest01 {
    	public static void main (String [] args){
    //		GouZaoFangFa g = new GouZaoFangFa();
    		GouZaoFangFa g = new GouZaoFangFa("张三" , 20);
    		System.out.println(g.getName());
    		System.out.println(g.getAge());
    	}
    
    }

this关键字用法

package com.Test.java;
/**
 * 
 * this关键词的用法
 *
 */

public class This {
	private String name;
	public void setName(String name){
		this.name =name;
	}
	public String getName(){
		return this.name;
	}
	public void m1(){
		m2();
		this.m2(); //这两种方式都可以调用到m2方法
	}
	public void m2(){
		System.out.println("唱歌");
	}
	

}

你知道封装吗?

package com.Test.java;
/**
 * 
 * private   封装(private只是封装的一种体现形式,并没有私有)
 *
 */

public class Private {
	//姓名
    private  int  age;
    //年龄
	private String name;
	
	//对外提供公共的访问方法,编写set和get方法
	public void setAge(int _age){
		if(_age>0 && _age<120){
		age = _age ;
		}else{
			System.out.println("年龄不符合常理,请重新输入");
		}
	}
	public  int  getAge(){
		return age;
	}
	
	public void setName(String _name){
		name = _name;
	}
	public String getName(){
		return name;
	}

}

测试类如下

package com.Test.java;

public class PrivateTest {
	public static void main (String [] args){
		Private p = new Private();
		p.setAge(20);
		p.setName("郝仁");
		System.out.println(p.getAge());
		System.out.println(p.getName());
		
	}

}

下面是两道习题

1. 创建对象的时候,为对象设置一个默认时间:1970-01-01

package com.Test.java;
/**
 * 
 * 需求:创建对象的时候,为对象设置一个默认时间:1970-01-01
 *
 */

public class MyDate {
	private int year;
	private int  month;
	private int day;
	
	public MyDate(){
		this(1970, 01, 01);  //可以通过this()的形式来调用有参构造函数
	}
	public MyDate(int year,int month,int day){
		this.year = year;
		this.month = month;
		this.day = day;
	}
	
	public void setYear(int year){
		this.year = year;
	}
	public int getYear(){
		return this.year;
	}
	public void setMonth(int month){
		this.month = month;
	}
	public int getMonth(){
		return this.month;
	}
	public void setDay(int day){
		this.day= day;
	}
	public int getDay(){
		return this.day;
	}

}

下面是测试类

package com.Test.java;
/**
 * 
 * MyDate的测试类
 *
 */

public class MyDateTest {
	public static void main(String [] args){
		MyDate m = new MyDate();
		System.out.println(m.getYear()+"-"+m.getMonth()+"-"+m.getDay());
	}

}

2. 定义一个长方形类,里面提供计算周长,面积的方法

package com.Test.java;
/**
 * 
 * 定义一个长方形类,里面提供计算周长,面积的方法
 *
 */

public class Rectangle1 {
     private	int weigth;
     private    int heigth;
     
     public Rectangle1(){
    	 this(2,3);      //宽2  高3
     }
     public Rectangle1(int weigth ,int heigth){
    	 this.weigth = weigth;
    	 this.heigth = heigth;
     }
     public int getLength(){
    	 return (weigth+heigth)*2;
     }
     public int getArea(){
    	 return weigth*heigth;
     }
     
     public void setWeight(int weight){
    	 this.weigth = weigth;
     }
     public int getweigth(){
    	 return this.weigth;
     }
     public void setheigth(int heigth){
    	 this.heigth = heigth;
     }
     public int getheigth(){
    	 return this.heigth;
     }

}

下面是测试类

package com.Test.java;
/**
 *定义一个长方形类,里面提供计算周长,面积的方法  测试类
 */

public class Rectangle1Test {
	public static void main(String [] args){
		Rectangle1 r = new Rectangle1();
		System.out.println(r.getLength());
		System.out.println(r.getArea());
		
	}

}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值