数组和字符串
2015-07-03 19:32
239 查看
一 数组
1、 数组的定义数组元素类型[] 数组名称 或者 数组元素类型 数组名称[](Java中更习惯用前者,后者偏向C\C ++中的写法)
数组是相同数据类型元素的集合,Java中将数组视为对象。
数组定义可以分为动态定义和静态定义。动态定义即数组定义与数组元素分配空间并赋值的操作分开进行;静态定义则是在定义数组的同时就为数组元素分配空间并赋值。
动态定义如下:
int[] a; a = new int[3]; a[0]=1; a[1]=2; a[2]=3;静态定义如下:
int[] a ={1,2,3};注意:Java中声明数组时不能指定其长度,如:int a[5]; 这是错误的
2、 多维数组(以二维数组为例)的定义
与定义一维数组类似,定义二维数组也有两种形式:
(1)数组元素类型[][] 数组名称; 如:int[][] a;
(2)数组元素类型 数组名称[][] 如:int a[][];
二维数组可以看作一个按照行和列存储数据的内存空间,按照所需确定数组每行和每列的长度,也有两种创建方法:
(1)数组每行、每列之间长度相同:int a=new int[2][3]; 表示创建一个2行3列的二维数组。
(2)数组每行、每列之间长度不同,例如:
results = new int[2][]; //表示创建一个2行的二维数组 results[0]=new int[3];//表示数组第一行有3个元素 results[1]=new int[5];//表示数组第二行有5个元素注意:Java中多维数组的声明和初始化应按从高维到低维的顺序进行。
3、 二维数组的长度
二维数组的长度是指行数的个数,二维数组每行的长度是指每行的元素个数。例如:
results.length表示二维数组results的长度,也就是行数;results[i].length则表示二维数组results第i行的长度,也就是元素的个数。
4、 操作数组的工具类
Java.util.Arrays是用于操作数组的工具类,里面定义了常见的操作数组的静态方法。
asList(T... a):返回一个受指定数组支持的固定大小的列表。不过在使用时,当传入基本数据类型的数组时,会把传入的数组整个当做返回的List中的第一个元素。如:
int[] a1=new int[]{1,2,3}; String[] a2 = new String[]{"aa","bb","vd"}; System.out.println(Arrays.asList(a1)); //[[I@78db81f3] System.out.println(Arrays.asList(a2)); //[aa, bb, vd]Arrays类中还提供了很多数组排序、查找、复制、比较的方法,详细请参考API文档。
Java还在System类中提供了一个静态方法arraycopy用于复制数组,声明如下:
public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)src--原数组。
srcPos--原数组中的起始位置。
dest--目标数组。
destPos--目标数组中的起始位置。
length--要复制的数组元素的数量。例:
int[] a1=new int[]{1,2,3,4,5}; int[] a2=new int[]{9,8,7,6,5,4,3,2,1}; System.arraycopy(a1, 0, a2, 0, 3); for(int j=0;j<a2.length;j++){ System.out.print(a2[j]); }
二 字符串
Java中把字符串作为对象处理,类String、StringBuffer和StringBuilder类都可以表示一个字符串。String是一个常量类,一旦String对象被创建后,包含这个对象中的字符序列不可变,直到对象被销毁。
StringBuffer代表一个字符序列可变的字符串。
StringBuilder是JDK1.5新增的一个类,它和StringBuffer基本类似,只是StringBuffer是线程安全的,StringBuilder是线程不安全的,效率略高于StringBuffer。
1、 String对象的创建
在Java中字符串不仅仅是字符数组,还是String类的一个实例,可以使用String类来构建,如下面两种方式都可以创建String对象:
String str="Hello"; String str= new String("hello");2、 String中常用的方法
(1)charAt:按照索引值,获得字符串中指定的字符
(2)compareTo:该方法用于比较两个字符串的大小,比较原理是依次比较每个字符的字符编码。若两个字符串中的字符编码完全相同则返回0,若第一个字符串的字符编码大于第二个字符串的字符编码则返回大于0的值,否则返回小于0的值。
String s1="abc"; String s2="abd"; int value=s1.compareTo(s2);//value=-1(3)equals:判断两个字符串对象的内容是否相同,相同则返回true,否则返回false。
(4)indexOf:查找特定字符或字符串在当前字符串中的起始位置,如果不存在则返回-1。
(5)replace:替换字符串中所有指定的字符,然后生成一个新的字符串。经过该方法调用后,原来的字符串不发生改变,只是生成一个改变后的新的字符串。
(6)split:该方法的作用是以特定的字符串作为间隔,拆分当前字符串的内容,一般拆分后得到一个字符串数组。
(7)substring:该方法的作用是取字符串中的子串。例如:
String s="trest"; String s1=s.substring(2);//该代码的作用是取字符串s中索引值为2(包括)以后的所有字符作为子串,s1="est"3、 String类和基本类型之间的转换
Byte.parseByte(字符串) 将字符串分解为byte
Short.parseShort(字符串) 将字符串分解为short整数
Integer.parseInt(字符串) 将字符串分解为int整数
Long.parseLong(字符串) 将字符串分解为long整数
Float.parseFloat(字符串) 将字符串分解为float浮点数
Double.parseDouble(字符串) 将字符串分解为double浮点数
注意:以上方法只是将字符串转为基本数据类型。如果指定的字符串无法分解为指定的数据类型数值,则会发NumberFormatException异常。
4、 String的==和equals的区别
Object类是Java中所有类的父类,在Object类中定义的equals方法只是简单使用 ==运算符测试两个引用值是否相等,即a.equals(b)和 a==b的效果相等。
在定义具体子类时,通常会重写equals方法。在String类中equals()是测试两个字符串中的内容是否相等,而运算符==则是测试两字符串的引用是否为同一字符串,即在内存中所占的位置是否一样。
在数组中==和equals效果相同。
5、 String的Intern()方法
字符串常量会缓冲到缓冲池里,若池里已存在该字符串,则直接将池里的返回。
String str1="fly"; String str2="me"; String str3="flyme"; String str4=null; str4=str1+str2; System.out.println(str3==str4);//false str4=(str1+str2).intern; System.out.println(str3==str4);//true
相关文章推荐
- 解决Mysql插入中文失败问题
- C++单例模式详解
- Oracle Hash分区的使用总结
- Xcode 6制作动态及静态Framework
- VC中的默认构造函数
- Objective-c学习三 控制台字符输入输出
- cocos2dx的CC_CALLBACK是个什么宏
- android :记住密码功能
- 该项目的建设maven片:4.协调和依赖,spring依赖注入demo
- Java知多少(111)数据库之修改记录
- Ubuntu 14.04 64位装32位支持库
- 即时通讯中添加好友相关专利初探
- 图书管理系统
- PHP 中 Failed to load resource: the server responded with a status of 500 (Internal Server Error)
- Linux(文件系统+其他)学习参考链接收藏
- python实践编程
- C++连接MYSQL数据库(使用MYSQL API方式,环境VS2013+MYSQL5.6)
- 需要技能列表
- php使用face++实现一个简单的人脸识别系统
- test