• 浅谈Java引用


    代码
    1 package data;
    2
    3  public class Yingyong implements Cloneable{
    4
    5 static class Data{
    6 public int x;
    7 public Data(int x){
    8 this.x=x;
    9 }
    10 @Override
    11 public Object clone() throws CloneNotSupportedException{
    12 return (Data)super.clone();
    13 }
    14 }
    15 /**
    16 * @param args Java最特别的地方是它把指针给赶走了,找来了引用来代替指针
    17 * 那么什么时候会用到引用呢
    18 */
    19 public static void main(String[] args) {
    20 //fun1();
    21 //fun2();
    22 //fun3();
    23 //fun4();
    24 //fun5();
    25 /*
    26 * 总结:
    27 * Java里没有了指针,全部使用引用,而且这种引用是强制性的,规定的。
    28 * 也就是说Java语法规定引用的地方就引用,它不管程序员此时需不需要引用
    29 */
    30 }
    31 /*
    32 * 可以肯定的是像 int char boolan float double 等在
    33 *复制时是不存在引用的。那么当你把一个基本数据类型传递到一个方法中
    34 *并在方法中对该数据进行修改,那么不幸的是,你将会碰到一个在C语言里经常碰到的问题
    35 *回到调用方法里后,发现该数据没有发生任何改变。那么我们该怎么解决。
    36 *1:转换成数组,因为数组在Java中是支持引用调用的 详见fun3()
    37 *2:包装成对象,Java是一种纯面向对象语言,什么都得做成对象。 详见fun4()
    38 */
    39 public static void fun1(){
    40 boolean a=true;
    41 boolean b=a;
    42 a=false;
    43 System.out.println("a:"+a);
    44 System.out.println("b:"+b);
    45 }
    46 /*
    47 * 考虑字符串Sting
    48 * 使用String a=new String("FREEZE"); 实例化,发现支持引用
    49 */
    50 public static void fun2(){
    51 String a=new String("Freeze");
    52 String b=new String("FREEZE");
    53 b=b.toLowerCase();
    54 System.out.println("a:"+a);
    55 System.out.println("b:"+b);
    56 }
    57 /*
    58 * 我们知道在C中数组是通过传递地址进行调用的
    59 * 而在Java中用的就是引用
    60 */
    61 public static void fun3(){
    62 int []a={1};
    63 int []b=a;
    64 a[0]=2;
    65 System.out.println("a:"+a[0]);
    66 System.out.println("b:"+b[0]);
    67 }
    68 /*
    69 * 对象的引用
    70 */
    71 public static void fun4(){
    72 Data a=new Data(1);
    73 Data b=a;
    74 b.x=2;
    75 System.out.println("a:"+a.x);
    76 System.out.println("b:"+b.x);
    77 }
    78 /*
    79 * 对象的克隆
    80 */
    81 public static void fun5(){
    82 Data a=new Data(1);
    83 Data b=new Data(1);
    84 try{
    85 b=(Data)a.clone();
    86 }catch(CloneNotSupportedException e){
    87 System.out.println("克隆失败!");
    88 }
    89 a.x=2;
    90 System.out.println("a:"+a.x);
    91 System.out.println("b:"+b.x);
    92 }
    93 }
    94
  • 相关阅读:
    sublime使用
    eclipse导入工程中文乱码
    npm 代理
    栈和堆
    Linux常用命令大全
    Google云开启SSH登录方法
    景安快运挂在磁盘-支持宝塔
    discuz 批量删除回复并且保留主题的方法,亲测3.4版本通过
    博客园去掉页面的广告的方法
    WordPress忘记后台登录地址时怎么办?万能登录地址
  • 原文地址:https://www.cnblogs.com/2010Freeze/p/1751620.html
Copyright © 2020-2023  润新知