java的数组和字符串

数组和字符串

为了简化定义多个类似功能的变量,使程序方便简单,可以使用数组变量

数组

1.两种定义方式

(1)动态(指定长度)

格式:数组datatype [ ] 数组名 = new datatype [长度];

(2)静态(指定元素)

格式:数组datatype [ ] 数组名 = new datatype[ ]{元素1,… ,元素n};

or 数组datatype [ ] 数组名 = {元素1,… ,元素n};//省略格式,必须在声明同时赋值。

注意

不可同时指定长度和元素,但是系统会自动计算长度,如果你给出了他的元素。

声明:即是(向编译器)说明变量的类型和名称的过程,(只作用于编译器)不分配存储空间。例:int a;/类 对象名;

定义:声明变量并且进行初始化的过程,分配存储空间。例:int a = 0;/类 对象名 = new 类();

数组长度一旦确定就无法改变,数组是定长的。

2.一维数组 与 二维数组

声明:

一维,

datatype name [ ] or datatype [ ] name.

int age[ ];int [ ] age;//仅变动方括号位置。

初始化同上(定义数组)。

二维,

比一维多出一个[ ],多维类推。java和c语言中含有多维数组。

n维数组的元素是n-1维数组。

Example.

int [ ] [ ] name = new int [m] [n] ;

even

int [ ] name [ ] = new int [m] [n];//属于是方括号随便移动了。动态

datatype [ ] [ ] name = {{元素1,元素2},{元素1.元素2},…};静态

动态初始化指定长度。

静态初始化指定元素。(系统自动计算长度)(相当于静态定死了,是所以是static的)

所以,相当于是都指定了长度(数组长度确定不变)

只是元素是否已知,非随机数,静态则已知,动态则等待赋值。

3.访问数组元素。

靠下标访问(从0开始)

int a[3];

a[2] = 0;//把a中第三个元素赋值为0;

4.数组参数方法

void func(int *a);

void func(int a[]);

void func(int a[3]);

有三种方式,使用数组做参数时,编译器会自动将数组名转化为指向数组第一个元素的指针。

可知编译器不知道数组a有多少个元素。even不知道是否是数组,只知道是指针,按地址然后按位读取?

复制数组只能一个元素一个元素地来,逐个复制,不可整体copy。

字符串

1.不变字符串类String

java中用String类的构造方法来穿件字符串变量。

常用构造方法如下:

(1)用String()方法创建String对象:

String s = new String(" ");//里面直接填内容

(2)用String(char a[ ])方法创建String对象:

char a [ ] = {‘a’,‘b’,‘c’};

String s = new String(a);

(3)使用String(char a[ ],int offset, int length)方法创建对象;

char a[ ] = {‘a’,‘b’,‘c’,‘d’};

String s = new String(a,1,3);

以上代码等价于String s = new String(“bcd”);a是对象数组,offset是开始截取字符串的位置,length表示截取后所得字符串的长度。

2.连接

字符串和字符串或者是其他datatype都可以直接用+号来实现连接,但返回结果是字符串类型。

常见于print的输出。

3.获取字符串信息

String s = “asdf”;

System.out.println(“字符串的长度为”+s.length( ) );

检索字符位置

,indexOf() 和 lastIndexOf( ),检索位置,一个是首次,一个是最后一次。

in dex Of 和 last In dex Of,也是驼峰命名法。

Example

System.out.println( name.indexOf(“s”));//检索s在字符串变量name中的首次出现位置。

X.字符串缓冲区类StringBuffer

StringBuffer构造方法

构造一个其中不带字符的字符串缓冲区。初始容量为16个字符。

append(char[ ] str)——将数组参数的字符串添加到次序列后。

append(“hh”);//或者字符数组名。

name.replace(1,4,“cast”);//置换原字符串变量指定内容,从1到4,(依旧是从0开始,正常);
(name 可以没有5个长度,关键是cast有4个长度,得占用那么多);

String与StringBuffer的区别

String字符串常量,StringBuffer字符串变量。

运行速度StringBuffer>String。因为String对象一旦创建就不能更改,java中对对象的操作实际上是

回收旧的,创建新的String常量。

StringBuffer的对象是变量,是可以更改的。所以运行更快。

String用于少量字符串操作的情况。StringBuffer用于多线程下在字符缓冲区进行大量操作的情况。

·

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值