你知道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());
}
}