java基础(个人学习笔记)C

12.

class ValueTest1{

    public static void main(String [] args){

       int num = 10;

       System.out.println("方法调用前num的值\t"+num);//10

       changeValue(num);

       System.out.println("方法调用后num的值\t"+num);//10

   

    }

    public static void changeValue(intnum){//int num = num

       num = 20;

       System.out.println("方法调用中num的值\t"+num);//20

    }

}

13.

class ValueTest2{

         publicstatic void main(String [] args){

                   String[]student = new String[3];

                   for(inti = 0;i<student.length;i++){

                            student[i]= "范冰冰";

                   }

                   intnum = 10;

                   for(Strings:student){

                            System.out.println(s);

                   }

                   System.out.println("方法调用前\t"+student[0]);//范冰冰

                   changeValue(student);

                   System.out.println("方法调用后\t"+student[0]);//周杰伦

         }

         //声明方法

         publicstatic void changeValue(String[] student){

                   student[0]= "周杰伦";

                   student[1]= "周杰";

                   System.out.println("方法调用中\t"+student[0]);//周杰伦

         }

        

}

总结:

1、对于基本类型参数,在方法体内对参数进行重新赋值,并不会改变原有变量的值。

2、对于引用类型参数,在方法体内对参数进行重新赋予引用,并不会改变原有变量所持有的引用。

3、方法体内对参数进行运算,不影响原有变量的值。

4、方法体内对参数所指向对象的属性进行操作,将改变原有变量所指向对象的属性值。

也就是说,对于基本数据类型,实现的是传值,只是个形参,不会改变原有值。对于引用数据类型,对这个引用进行操作,其实也是相当于对形参的操作,不会改变原来的引用。但是,当对这个引用的属性进行操作的时候,相当于CPP中的传址调用,可以改变这个引用的属性的值。

Eg:

public class Main {

 

       private static voidgetMiddleOne(boolean b, Boolean boo, Boolean[] arr){

              b = true;  //形参,不会改变原有值

              boo = newBoolean(true);  //引用变量的直接操作相当于值传递,不会改变原来的引用变量

              arr[0] = true;  //引用变量的属性的操作,会改变原有引用的属性,相当于传址调用

       }

      

       //测试

       public static voidmain(String[] args) {

              boolean b = false;

              Boolean boo = newBoolean(false);

              Boolean[] arr = newBoolean[]{false};

 

              getMiddleOne(b, boo,arr);

             

              System.out.println(b); 

              System.out.println(boo.toString());

              System.out.println(arr[0]);

 

              /**

               * output:

               *         false

               *         false

               *          true

               */

       }

}

 

14.

/*

 

流程控制语句深入

在循环外侧+label(可以自定义)

break label:label在哪里就结束哪层循环

continue:结束内层循环,继续外层循环

1234 1234 1234 1234 1234 1234 1234 1234 1234 1234

*/

class BreakTest{

    public static void main(String [] args){

   

       label:for(int i = 1;i<=10;i++){

      

           for(int j = 1;j<=10;j++){

              if(j==5){

                  //break ;

                  continue label;

              }

           System.out.print(j);

           }

           System.out.println();

       }

    }

 

}

 

15.

class JinZhi{

/*

将一个10进制的数转为二进制数

       1.定义一个10进制数

       2.除以2取余数  取商

       3.将商作为被除数继续 取余数,取商

       4.当商为0时终止

5.注意:result类型为String

*/

       public static voidmain(String [] args){

              //定义一个数

              int num = 6;//110

              String result ="";

             

              //处理逻辑

              while(num!=0){

                     //取余数

                     int yuShu =num%2;//0 , 1,  1

                     //让最后输出(最新的数据)的位于字符串的最前面

                     result =yuShu+result;//0+

                    

                     System.out.println(result);

                     //取商

                     int shang =num/2;

             

                     //将商作为被除数

                            num =shang;

             

              }

              //输出解果

      

       }

 

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值