thingking in java test2.11练习(6)

本文详细介绍了Java中一个简单的存储方法,该方法通过计算字符串长度的两倍来确定存储所需的空间大小。文章还深入探讨了String类的length()方法实现原理,并通过示例展示了如何在程序中正确地使用非静态方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:编写一个程序,让它含有本章所定义的storage()方法的代码段,并调用之。

含有storage()方法的代码段在P27面。
int storage(String s) {
return s.lenght()*2;
}
该方法参数类型是string,返回类型是int
程序非常简单,代码如下:

public class test2_6 {
    public static void main(String[] args) {
        String str = "ashudhck";
        int a = new test2_6().storage(str);
        System.out.println(a);
    }

    int storage(String s) {
        return s.length()*2;
    }
}

注意,在静态方法里调用非静态方法时要先实例化非静态方法所在的类,否则即使它们是同一个类的成员方法,也不能直接调用。
在这里storage方法返回的是需要多少字节才能容纳传入的string对象。
s.length()方法是String类的方法之一,我们来看一下源码:

/**
     * Returns the length of this string.
     * The length is equal to the number of <a href="Character.html#unicode">Unicode
     * code units</a> in the string.
     *
     * @return  the length of the sequence of characters represented by this
     *          object.
     */
    public int length() {
        return value.length;
    }

注释说它返回的是调用该方法的string对象的长度,不过直接看源码看不出来,我们看一下value:

private final char value[];

value是一个char数组
查看API中关于String的介绍我们会发现这样几段话:
For example:

 String str = "abc";

is equivalent to:

 char data[] = {'a', 'b', 'c'};
 String str = new String(data);

所以String对象存储字符串就是用一个char数组把每个字符逐一存入。length()方法实际求的是char数组的长度。

这个题目也是非常简单的,我们在翻看书本相关内容时会注意到这样一句话:若返回类型是void,return关键字的作用只是用来退出方法。因此没有必要到方法结束才离开,可以在任意地方返回。

public class test2_6 {
    public static void main(String[] args) {
        String str = "ashudhck";
        new test2_6().storage(str);
    }

    void storage(String s) {
        int a = s.length()*2;
//        return;
//        a++;
        for (int i = a ; i < 100; i++) {
            if (i == 50) {
                return;
            }
            System.out.println(i);
        }
    }
}

注释部分编译器报错,显然return后面不能直接接其他代码。
我们将return放到循环判断语句中,程序顺利运行,控制台输出到49就中断了,显然刚好验证了书本的话:可在任何地方返回,在这种情形下return作用与break类似。不过两者肯定是不一样的。
以上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值