A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 齐连涛 中级黑马   /  2012-10-20 10:38  /  1901 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 齐连涛 于 2012-10-26 12:44 编辑

数组的长度length是属性,而字符串的长度是通过length()方法得到的,两种得到长度的方式有什么区别?
或者说,为什么字符串的长度不是属性?

评分

参与人数 1黑马币 +10 收起 理由
刘芮铭 + 10

查看全部评分

4 个回复

正序浏览
首先应该明确下几个概念:
1,数组是一种特殊对象,可以定义为任何有效数据类型,也就是数组元素既可以是基本数据类型,也可以是类类型或数组。
2,数组中每个元素的类型相同,所有的数组对象都有一个length属性,该属性存放数组的元素个数,数组类没有length()方法。
3,数组有一维和多维数组,一维数组的length属性返回该数组元素个数,多维数组的length属性只返回的是该多维数组中第一维数组的元素个数

4,String 是字符串类,字符串是一个整体,字符串不是基本数据类型,而是复合数据类型
String str=“abc”;等效于:
char data[]={'a','b','c'};
String str=new String(data);
字符串里有一个方法是int length() 返回此字符串的长度。 但没有length属性
字符串的长度指字符串中字符的unicode(两个字节)字符个数

举例:

String s1 = new String("Hello World!");
char c[]={'j','a','v','a'};
int a[]={{45,25},{89,6,7,1},{6,89,1},{9,6,2,1,2}};
String s2 =new String(c);
int i=s1.length();//i=12
int j=s2.length;//j=4
int k=a.length();//k=4
int f=a[3].length;//f=5
回复 使用道具 举报
length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了length这个属性.  而的length()方法是针对字符串String说的,如果想看这个字符串的长度则用到length()这个方法.
楼上说的也很清楚,,,
回复 使用道具 举报
属性可以赋值而方法只能获取.为了让你写代码的时候可以对数组长度赋值而不可以对字符串长度赋值,所以

数组的长度length是属性,而字符串的长度是通过length()方法得到.这样你只能获取字符串长度了。

对字符串长度赋值是不合适的.

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
数组的是数组的属性后面没括号,对于字符串是方法,调用方法时后面有括号:
  1. class Person
  2. {
  3.         public String name;
  4.         public void setName(String name)
  5.         {
  6.                 this.name = name;
  7.         }
  8.         public String getName()
  9.         {
  10.                 return name;
  11.         }
  12. }

  13. class Demo
  14. {
  15.         public static void main(String[] args)
  16.         {
  17.                 Person p = new Person();
  18.                 p.name = "lee"; //设置对象属性。
  19.                 System.out.println(p.getName()); //调用方法。
  20.         }
  21. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马