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

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

  1. Java中的值传递和引用传递

    当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?      答:是值传递.Java 编程语言只有值传递参数.当一个对象实例作为 ...

  2. Java中传参数--值传递和引用传递

    ** Java中传参数–值传递和引用传递 ** 在Java中,传参数分为值传递和引用传递. 在Java中的数据类型分为两大类:一类是引用类型,也叫类类型(除了String以外的所有复合数据类型,包括数 ...

  3. 【Java基础】Java中的值传递、引用传递

    Java中的值传递.引用传递 对于一个方法而言,参数是为该方法提供信息的,而不是想让该方法改变自己.--<Java编程思想> 值传递是对基本型变量而言的,传递的是该变量的一个副本,改变副本 ...

  4. Java中值传递和引用传递原理以及区别

    Java在参数传递时有两种:一种是按值传递,一种是按引用传递 值传递:值传递是指在调用方法时将实际参数复制一份传递到方法中,也就是说,在调用方法时,实际参数把他的值的副本传递给对应的形式参数.(注意这 ...

  5. Java中,String类型和包装类型作为参数传递时,是属于值传递还是引用传递呢?...

    <Java中,String类型和包装类型作为参数传递时,是属于值传递还是引用传递呢?> <Java中的值传递和引用传递> 原理知识: 如果参数类型是原始类型,那么传过来的就是这 ...

  6. 一文彻底搞懂Java中的值传递和引用传递!

    关于Java中方法间的参数传递到底是怎样的.为什么很多人说Java只有值传递等问题,一直困惑着很多人,甚至我在面试的时候问过很多有丰富经验的开发者,他们也很难解释的很清楚. 我很久也写过一篇文章,我当 ...

  7. java 地址传递 返回值_Java中的值传递和引用传递

    这几天一直再纠结这个问题,今天看了这篇文章有点思路了,这跟C++里函数参数为引用.指针还是有很大区别. 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里 ...

  8. [转]java中的值传递和引用传递

    java中的值传递和引用传递 值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参 数的值. 引用传递:也称为传地址.方法调用时,实际参数的引用(地址,而不 ...

  9. java中的参数传递(只有值传递没有引用传递)

    Java中只有传值调用(值传递),没有传址调用(址传递或者引用传递).所以在java方法中改变参数的值是不会改变原变量的值的,但为什么改变引用变量的属性值却可以呢?请看下面的解答. java中的数据类 ...

最新文章

  1. dailybuild
  2. Spark Shuffle Write阶段磁盘文件分析
  3. EF Core 数据变更自动审计设计
  4. 《H5 移动营销设计指南》 读书笔记整理
  5. dhclient常用命令
  6. 关于如何在Listener中注入service和ServletContextListener源码分析
  7. JavaScript系列之注释
  8. 酒店ETL管理解决方案
  9. 智慧物流园区供应链管理系统解决方案:数智化供应链赋能物流运输行业供应链新模式
  10. 啡鸟集咖啡报告:每天喝3-4杯咖啡有助延年益寿
  11. 磁阻随机存储器(MRAM)市场现状研究分析与发展前景预测报告
  12. C语言:goto循环语句
  13. 预先下载的keras库中神经网络模型指定存放路径及如何上传的问题
  14. Android 自定义viewpage + videoview 实现竖屏视频播放效果
  15. 【Linux】基本指令(下)
  16. 【张小平工作日志】DBCP、c3p0、Druid、Proxool数据库连接池比较
  17. 手机配件实体店好做不_震惊!手机实体店,你不得不防的套路!
  18. android 图片保存电脑上,怎样简单快速的将手机里的照片和视频,批量保存到电脑?...
  19. php rabbitmq 持久化 磁盘 setflags,PHP使用RabbitMQ
  20. 在Mac上为其他设备开启代理

热门文章

  1. 浏览器调试 console.table() 方法,方便查看json和数组数据内容
  2. TPAMI 2021 | 让时间走向二维,基于文本的视频时间定位新方法:MS-2D-TAN,兼顾速度与精度!...
  3. CM 安装及部署操作
  4. 用批处理文件实现同步到个人时间服务器,局域网内时间同步net time的使用
  5. Tensorflow技术实践之mnist_ with_summaries.py报错
  6. css实现单边斜切效果
  7. 从零开始WebAPP尝试(四)----登录实现
  8. Vxe Table一些简单的应用和踩坑记录
  9. 用pygame写像素游戏地图编辑器
  10. KernelGAN论文详解分享