天天看点

java基础(二)------数组与字符串1.数组2.字符串

1.数组

1.数组的声明

注:[]的位置 可在数组名前或者后,都可以。

一维数组:

int f[]; //声明一个一维数组
    int p[]=new int[]; //声明一个一维数组,并且分配空间
    int x[]={"1","5","2"}; //声明一个一维数组并且初始化
           

二维数组及以上:

int hh[][]; //声明一个二维数组
    int adc[][]=new int [][]; //声明一个二维数组,并且分配空间
    int ap[][]={"1,2,3","5,6,7"};//声明一个[3][2]大小的二维数组,并且初始化

    int ez[][]=new int[][];
    ez[]=new int[];
    ez[]=new int[];
    ez[]=new int[];
    //声明一个第二维数组长度不同的二维数组
           

2.数组注意点

  1. 如果没有明确的初始化数组元素,那么数组就会用默认的类型值初始化,例如假若没有初始化整型数组,元素都将默认值为0,没有初始化的boolean值是false,对象数组是null。
  2. 数组索引起始为0,负数索引在Java中是无效的,会抛出ArrayIndexOutOfBoundException ,如果你尝试用无效的索引访问数组,这个无效的索引可能是一个负索引,或者是大于等于数组长度的索引。
  3. 数组一个固定长度 的数据结构,一旦声明,你不能改变数组的长度,数组的长度为 数组.length 。
  4. Java中数组可以轻易的转换成ArrayList。ArrayList一个基于索引的集合,它是作为数组的备选方案。ArrayList的优点是可以改变容量大小,只需要创建个更大的数组然后拷贝内容到新数组,但你不能改变数组的大小(java的集合构架,以后再说)

3.Array类

java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的。具有以下功能(array是一个声明好的int数组):

  • 给数组赋值:通过fill方法

    Arrays.fill(array, 5);//array数组被5填充

  • 对数组排序:通过sort方法,按升序。

    Arrays.sort(array);

  • 比较数组:通过equals方法比较数组中元素值是否相等。

    boolean a=Arrays.equals(array1,array2);//返回一个布尔值

  • 查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作。

    Arrays.binarySearch(array, “adc”));//查找adc再array中的位置,返回其索引

2.字符串

1.String类

  1. String类再包 java.lang.*中,所以不需要引用包可以直接用。
  2. String对象的初始化:
String aStr="abc";
String bStr=new String("abc");
String cStr=new String(new char[]{'a','b','c'});
           

引用链接http://blog.csdn.net/cainiao123hack/article/details/7801179

String str=new String(“XXX”);

String str=”XXX”;

二者看似相同,其实有很大的差别。

前者是java中标准的对象创建方式,其创建的对象将直接放置到堆中,每调用一次就会创建一个新的对象;后者则会在栈中创建一个对象引用变量str,然后 查看字符串池中是否存在”XXX”,如果没有,则将”XXX”存放字符串池,并令引用变量str指向它;如果已经有”XXX”,则直接令str指向它。这样充分利用了栈的数据共享优点,当然也可能是一个陷阱,对象很有可能没有创建,只不过指向一个先前已经创建的对象;而new()方法则能保证每次都创建一个新的对 象。

2.String类常用方法

  • charAt(index),根据索引值返回字符串中的指定字符
String s = “abc”;
 char c = s.chatAt();
则变量c的值是’b’
           
  • length(),返回字符串的长度
int len1 = s1.length();
           
  • isEmpty(),返回boolean,判断是否为空
  • equals(String),判断两个字符串对象的内容是否相同,返回boolean
boolean a=s.equals("abc");
s.equalsIgnoreCase("123A")   //忽略大小判断字符串时都相等
           
  • trim(),去掉字符串开始和结尾的所有空格,然后形成一个新的字符串,不去掉字符串中间的空格
String s = “   abc abc  “;
String s1 = s.trim();
则字符串s1的值为:“abc abc ”,字符串s的值不变
           
  • valueOf(基本数据类型),将其它类型的数据转换为字符串类型
int n = ;
String s = String.valueOf(n);
           
  • indexOf(char),查找特定字符或字符串在当前字符串中的起始位置,如果不存在则返回-1
String s = “abcded”;
int index = s.indexOf(‘d’);`
           
  • lastIndexOf(char),从字符串的末尾开始向前查找第一次出现的规定的字符或字符串
  • substring(startInedx,endIndex),取字符串s中从索引值2(包括)开始,到索引值5(不包括)的部分作为子串
String s = “abcded”;
String ss= s.substring(,);`
           
  • 其他几个常用方法
s.startsWith("12")   //判断字符串是否用“12”开头  
s.endsWith("12")    //判断字符串是否用“12”结尾   
s.contains("wang")   //判断字符串是否包含“wang”  
s.replace("12", "456")   //将字符串中的“12”用“456”替代  
s.split("3")   //将字符串用“3”进行分割,得到字符串数组  
s.toUpperCase()   //将字符串转换为大写  
s.toLowerCase()   //将字符串转换为小写  
s.toCharArray()   //将字符串转换为字符数组