微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

06-02 Java值传递、数据加密

值传递:

<span style="color: #ff0000;"&gt;Java中的参数传递问题: 基本类型:形式参数的改变对实际参数没有影响。基本类型传递的是数据值 引用类型:形式参数的改变直接影响实际参数。引用类型传递的是地址值

<span style="color: #008000;">*/
<span style="color: #0000ff;">class<span style="color: #000000;"> ArgsDemo {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #0000ff;">int a = 10<span style="color: #000000;">;
<span style="color: #0000ff;">int b = 20<span style="color: #000000;">;
System.out.println("a:"+a+",b:"+b); <span style="color: #008000;">//<span style="color: #008000;">a:10,b:20
<span style="color: #000000;"> change(a,b);
System.out.println("a:"+a+",b:"+b); <span style="color: #008000;">//<span style="color: #008000;">??? a:10,b:20

    <span style="color: #0000ff;"&gt;int</span>[] arr = {1,2,3,4,5<span style="color: #000000;"&gt;}; 
    change(arr);
    <span style="color: #ff0000;"&gt;Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println(arr[</span></span><span style="color: #ff0000;"&gt;1]); //???    4</span>

<span style="color: #000000;"> }

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;static</span> <span style="color: #0000ff;"&gt;void</span> change(<span style="color: #0000ff;"&gt;int</span> a,<span style="color: #0000ff;"&gt;int</span> b) { <span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;a=10,b=20</span>
    Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println("a:"+a+",b:20</span>
    a = b;    <span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;a=20</span>
    b = a + b; <span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;b=40</span>
    Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println("a:"+a+",b:"+b); <span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;a:20,b:40</span>

<span style="color: #000000;"> }

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;static</span> <span style="color: #0000ff;"&gt;void</span> change(<span style="color: #0000ff;"&gt;int</span>[] arr) { <span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;arr={1,5};</span>
    <span style="color: #0000ff;"&gt;for</span>(<span style="color: #0000ff;"&gt;int</span> x=0; x<arr.length; x++<span style="color: #000000;"&gt;) {
        </span><span style="color: #0000ff;"&gt;if</span>(arr[x]%2==0<span style="color: #000000;"&gt;) {
            arr[x]</span>*=2<span style="color: #000000;"&gt;;
        }
    }
    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;arr={1,8,5};</span>

<span style="color: #000000;"> }
}

Java 基本类型值传递,引用类型值传递 内存图解:

 

 数据加密

加上5,再用和除以10的余数代替该数字, 最后将第一位和最后一位数字交换。 请任意给定一个小于8位的整数, 然后,把加密后的结果在控制台打印出来。
题目要求:
    A:数据是小于8位的整数
        定义<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a>int类型的数据
        int number = 123456;
    B:加密规则
        a:首先将数据倒序
            结果 654321
        b:然后将每位数字都<a href="https://www.jb51.cc/tag/jiashang/" target="_blank" class="keywords">加上</a>5,再用和除以10的余数代替该数字
            结果 109876
        c:最后将第一位和最后一位数字交换
            结果 609871
    C:把加密后的结果<a href="https://www.jb51.cc/tag/shuchu/" target="_blank" class="keywords">输出</a>在控制台

    通过简单的分析,我们知道如果我们有办法把这个数据变成数组就好了。
    不是直接写成这个样子的:
        int[] arr = {1,5,6};

    如何把数据转成数组呢?
        A:定义<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a>数据
            int number = 123456;
        B:定义<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a>数组,这个时候问题就来了,数组的长度是多少呢?
            int[] arr = new int[8]; //不可能超过8
            在赋值的时候,我用<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a>变量记录索引的变化。
            定义<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a>索引值是0
            int index = 0;
        C:<a href="https://www.jb51.cc/tag/huoqu/" target="_blank" class="keywords">获取</a>每<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a>数据
            int ge = number%10
            int shi = number/10%10
            int bai = number/10/10%10

            arr[index] = ge;
            index++;
            arr[index] = shi;
            index++;
            arr[index] = bai;
            ...

<span style="color: #008000;">/
<span style="color: #008000;">/
<span style="color: #008000;">
知识点:
变量
数据类型
运算符
键盘录入
语句
方法
数组
<span style="color: #008000;">*/
<span style="color: #0000ff;">import<span style="color: #000000;"> java.util.Scanner;

<span style="color: #0000ff;">class<span style="color: #000000;"> JiaMiDemo2 {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;">创建键盘录入对象
Scanner sc = <span style="color: #0000ff;">new<span style="color: #000000;"> Scanner(system.in);

    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;请输入<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a>数据</span>
    Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println("请输入<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a>数据(小于8位):"<span style="color: #000000;"&gt;);
    </span><span style="color: #0000ff;"&gt;int</span> number =<span style="color: #000000;"&gt; sc.nextInt();

    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;写<a href="https://www.jb51.cc/tag/gongneng/" target="_blank" class="keywords">功能</a>实现把number进行加密
    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;<a href="https://www.jb51.cc/tag/diaoyong/" target="_blank" class="keywords">调用</a></span>
    String result =<span style="color: #000000;"&gt; jiaMi(number);
    Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println(</span>"加密后的结果是:"+<span style="color: #000000;"&gt;result);
}

</span><span style="color: #008000;"&gt;/*</span><span style="color: #008000;"&gt;
    需求:写<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a><a href="https://www.jb51.cc/tag/gongneng/" target="_blank" class="keywords">功能</a>,把数据number实现加密。
    两个明确:
        返回值类型:String 做<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a>字符串的拼接。
        参数列表:int number
</span><span style="color: #008000;"&gt;*/</span>
<span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;static</span> String jiaMi(<span style="color: #0000ff;"&gt;int</span><span style="color: #000000;"&gt; number) {
    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;定义数组</span>
    <span style="color: #0000ff;"&gt;int</span>[] arr = <span style="color: #0000ff;"&gt;new</span> <span style="color: #0000ff;"&gt;int</span>[8<span style="color: #000000;"&gt;];

    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;定义索引</span>
    <span style="color: #0000ff;"&gt;int</span> index = 0<span style="color: #000000;"&gt;;

    </span><span style="color: #ff0000;"&gt;//把number中的数据想办法放到数组中
    while(number > 0) {
        arr[index] = number%10;
        index++;
        number /= 10;
    }

    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;把每个数据加5,然后对10取得余数</span>
    <span style="color: #0000ff;"&gt;for</span>(<span style="color: #0000ff;"&gt;int</span> x=0; x<index; x++<span style="color: #000000;"&gt;) {
        arr[x] </span>+= 5<span style="color: #000000;"&gt;;
        arr[x] </span>%= 10<span style="color: #000000;"&gt;;
    }

    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;把第一位和最后一位交换</span>
    <span style="color: #0000ff;"&gt;int</span> temp = arr[0<span style="color: #000000;"&gt;];
    arr[</span>0] = arr[index-1<span style="color: #000000;"&gt;];
    arr[index</span>-1] =<span style="color: #000000;"&gt; temp;

    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;把数组的元素拼接成<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a>字符串返回
    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;定义<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a>空<a href="https://www.jb51.cc/tag/neirong/" target="_blank" class="keywords">内容</a>字符串</span>
    String s = ""<span style="color: #000000;"&gt;;

    </span><span style="color: #0000ff;"&gt;for</span>(<span style="color: #0000ff;"&gt;int</span> x=0; x<index; x++<span style="color: #000000;"&gt;) {
        s </span>+=<span style="color: #000000;"&gt; arr[x];
    }

    </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; s;
}

}

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐