举例讲解Java中数组和字符串类型的使用方法

Java数组

数组是具有相同数据类型的一组数据的集合,Java支持多为数组,一维数组的每个基本单元都是基本数据类型的数据,二维数组就是每个基本单元是一维数组的一维数组,以此类推,n维数组的每个基本单元都是n-1为数组的n-1维数组。下面以一维数组为例说明Java数组的用法。

1、数组声明

数组声明有如下两种形式(方括号的位置不同):

int arr[];
int[] arr2;

2、数组初始化

数组初始化也有两种形式,如下(使用new或不使用new):

int arr[] = new int[]{1, 3, 5, 7, 9};
int[] arr2 = {2, 4, 6, 8, 10};

3、遍历数组

遍历数组可用for/foreach,如下:

 public static void main(String[] args) {
    int arr[] = new int[]{1, 3, 5, 7 ,9};
    int[] arr2 = {2, 4, 6, 8, 10};
    for (int i = 0; i < arr.length; ++i) {
      System.out.print(arr[i] + "\t"); // 1 3 5 7 9
    }
    for (int x: arr2) {
      System.out.print(x + "\t"); // 2 4 6 8 10
    }
  }

4、Arrays.fill()填充数组

使用Arrays类的静态方法,需要import包java.util.Arrays,定义了许多重载方法。

void fill(int[] a, int val)全部填充
void fill(int[] a, int fromIndex, int toIndex, int val)填充指定索引的元素

 int[] arr3 = new int[5];
    for (int x: arr3) {
      System.out.print(x + "\t"); // 0 0 0 0 0 全部初始化为0
    }
    System.out.println();
    Arrays.fill(arr3, 10);
    for (int x: arr3) {
      System.out.print(x + "\t"); // 10 10 10 10 10 全部填充为10
    }
    System.out.println();
    Arrays.fill(arr3, 1, 3, 8);
    for (int x: arr3) {
      System.out.print(x + "\t"); // 10 8 8 10 10 填充指定索引
    }
    System.out.println();

5、Arrays.sort()对数组排序

void sort(int[] a)全部排序
void sort(int[] a, int fromIndex, int toIndex)排序指定索引的元素

 int[] arr4 = {3, 7, 2, 1, 9};
    Arrays.sort(arr4);
    for (int x: arr4) {
      System.out.print(x + "\t"); // 1 2 3 7 9
    }
    System.out.println();
    int[] arr5 = {3, 7, 2, 1, 9};
    Arrays.sort(arr5, 1, 3);
    for (int x: arr5) {
      System.out.print(x + "\t"); // 3 2 7 1 9
    }
    System.out.println();

6、Arrays.copyOf()复制数组

int[] copyOf(int[] original, int newLength)复制数组,指定新数组长度
int[] copyOfRange(int[] original, int from, int to)复制数组,指定所复制的原数组的索引

  int[] arr6 = {1, 2, 3, 4, 5};
    int[] arr7 = Arrays.copyOf(arr6, 5); // 1 2 3 4 5
    int[] arr8 = Arrays.copyOfRange(arr6, 1, 3); // 2 3
    for (int x: arr7) {
      System.out.print(x + "\t");
    }
    System.out.println();
    for (int x: arr8) {
      System.out.print(x + "\t");
    }
    System.out.println();

Java字符串
Java字符串类型为String类,下面介绍如何操作字符串。

1、字符串连接

字符串连接使用“+”符号,如下例子:

    String s = new String("Hello");
    String s2 = new String("World");
    System.out.println(s + " " + s2); // Hello World

2、获取字符串长度

获取字符串长度使用str.length(),如下例子:

    String s3 = new String("Hello Java");
    System.out.println(s3.length()); // 10

3、获取指定字符串的索引

获取指定字符串的索引使用str.indexOf(substr)、str.lastIndexOf(substr),如下例子:

    String s4 = new String("how are you");
    System.out.println(s4.indexOf("o")); // 1 从头开始查找
    System.out.println(s4.lastIndexOf("o")); // 9 从尾开始查找

4、获取指定索引的字符

获取指定索引的字符使用str.charAt(index),如下例子:

    String s5 = new String("Hello Java");
    System.out.println(s5.charAt(4)); // o

5、去除字符串中的空格

去除字符串中的空格有多种方法,使用str.trim()或str.replaceAll(regex, replacement),也可以借用StringTokenizer类对字符串使用空格进行分隔,使用前需要import包java.util.StringTokenizer,如下例子:

 String s6 = new String(" Hello Java ");
    String s7 = s6.trim(); // 去除字符串开始、结尾处的空格
    String s8 = s6.replaceAll(" ", ""); // 替换字符串中的全部空格
    StringTokenizer st = new StringTokenizer(s6, " "); // 使用空格分隔字符串
    StringBuffer sb = new StringBuffer();
    while (st.hasMoreTokens()) {
      sb.append(st.nextToken());
    }
    System.out.println("\"" + s6 + "\"" + "length = " + s6.length()); // " Hello Java "length = 14
    System.out.println("\"" + s7 + "\"" + "length = " + s7.length()); // "Hello Java"length = 10
    System.out.println("\"" + s8 + "\"" + "length = " + s8.length()); // "HelloJava"length = 9
    System.out.println("\"" + sb.toString() + "\"" + "length = " + sb.toString().length()); // "HelloJava"length = 9

6、替换字符串

替换字符串可以替换全部子串,也可以替换第一个子串,如下例子:

 String sr = new String("abc abd bcd");
    String sr2 = sr.replace("ab", "xx"); // 替换全部子串
    String sr3 = sr.replaceFirst("ab", "xx"); // 替换第一个字串
    System.out.println(sr2); // "xxc xxd bcd"
    System.out.println(sr3); // "xxc adb bcd"

7、字符串判等

字符串判等有多种情况,例如字符串内容判等、是否忽略大小写、内存地址判等、字符串开始或结尾处判断等,如下例子:

  String se = new String("Summer is so Hot");
    String se1 = new String("Summer is so Hot");
    String se2 = new String("summer is so hot");
    String se3 = se;
    System.out.println(se == se1); // false 比较内存而非字符串内容
    System.out.println(se == se3); // true
    System.out.println(se.equals(se1)); // true 比较字符串内容
    System.out.println(se.equals(se2)); // false
    System.out.println(se.equalsIgnoreCase(se2)); // true 忽略大小写
    System.out.println(se2.startsWith("summer")); // true 字符串开始
    System.out.println(se2.endsWith("cold")); // false 字符串结尾

8、字符串大小写转换

字符串大小写转换如下例子:

  String sc = new String("hello WORLD");
    String scl = sc.toLowerCase(); // hello world 转换为小写
    String scu = sc.toUpperCase(); // HELLO WORLD 转换为大写
    System.out.println(scl + " " + scu);

9、字符串分隔

字符串分隔如下例子:

  String ss = new String("abc,def,g,h");
    String[] ss2 = ss.split(","); // 以逗号分隔
    for (String x: ss2) {
      System.out.print(x + "\t"); // abc def g h
    }

10、格式化字符串

字符串格式化有多种形式,如日期格式化、时间格式化、进制转换等,Date类的使用需要import包java.util.Date,如下例子:

    Date d = new Date();
    System.out.println(d); // Wed Jul 22 16:00:36 CST 2015 默认格式
    System.out.println(String.format("%tm", d)); // 07 两位数月份
    System.out.println(String.format("%tH", d)); // 16 两位24小时制
    System.out.println(String.format("%x", 256)); // 100 十六进制

11、String、StringBuffer、StringBuilder类比较

String:字符串常量,不可变对象,变量内容改变时实际上是生成了一个新的String对象,当多次、频繁改变变量内容时,会对系统性能产生影响,特别是由此导致GC开始工作时,程序速度就会变的很慢。

StringBuffer:字符串变量,线程安全,变量内容改变时其实是对同一个对象进行操作,效率比String类型高。

StringBuilder:字符串变量,与StringBuffer兼容,却是非线程安全的,如果是单线程,优先使用StringBuilder,它比StringBuffer要快。

时间: 2015-09-08

Java中char数组(字符数组)与字符串String类型的转换方法

本文实例讲述了Java中char数组(字符数组)与字符串String类型的转换方法.分享给大家供大家参考,具体如下: 在Java语言编程时,使用"口令字段"jPasswordField组件时,如果要获得密码值,就需要使用该组件的getPassword()方法.jPasswordField的getPassword()方法返回一个char类型的数组,我们经常需要将这个数组转换为String类型,以便进行诸如口令匹配或口令赋值等操作.这时,就需要将char类型的数组进行转换.当然也经常会遇到

浅谈java 字符串,字符数组,list间的转化

1.关于java.lang.string.split xxx.split()方法可以将一个字符串分割为子字符串,然后将结果作为字符串数组返回. 2.字符串转字符数组 String str =" aa.png,a2.png,a3.png"; String[] arrayStr =new String[]{}; arrayStr = str.split(","); 3.字符数组转list List list = java.util.Arrays.asList(array

Java编程实现中英混合字符串数组按首字母排序的方法

本文实例讲述了Java编程实现中英混合字符串数组按首字母排序的方法.分享给大家供大家参考,具体如下: 在Java中对于字符串数组的排序,我们可以使用Arrays.sort(String[])方法很便捷的进行排序.例如: String[] arrays = new String[] { "gyu", "sdf", "zf", "大同", "收到", "地方", "三等分"

Java中字符串与byte数组之间的相互转换

前言 Java与其他语言编写的程序进行tcp/ip socket通讯时,通讯内容一般都转换成byte数组型,java在字符与数组转换也是非常方便的.下面跟我一起来了解一下字符串与byte之间转换的原理 原理 我们都知道,在Java里byte类型是占用1个字节,即8位的,而16进制的字符占用4位,所以每个byte可以用两个字符来表示,反之亦然. 举个例子 byte = 123 用二进制表示:0111 1011 每4位用字符表示: 7 b 是的,原理就这么简单,接下来用代码实现: byte[] 转1

java字符串数组进行大小排序的简单实现

若是将两个字符串直接比较大小,会包:The operator > is undefined for the argument type(s) java.lang.String, java.lang.String的错误. 字符串比较大小可以用字符串长度或者是比较字符串内字符的ASCII码值,前者太简单,就不进行讲述记录. 字符串用ASCII码比较大小,规则是: 1.比较首字母的ASCII码大小 2.若是前面的字母相同,则比较之后的字母的ASCII码值 3.若是一个字符串从首字母开始包含另一个字符串

java实现字符串转String数组的方法示例

本文实例讲述了java实现字符串转String数组的方法.分享给大家供大家参考,具体如下: package Tsets; import java.util.Arrays; import java.util.List; public class String2StringList { public static List<String> stringToList(String str){ return Arrays.asList(str.split(",")); } publ

java求数组元素重复次数和java字符串比较大小示例

复制代码 代码如下: /** * Name: 求数组中元素重复次数对多的数和重复次数 * Description:  * 数组中的元素可能会重复,这个方法可以找出重复次数最多的数,同时可以返回重复了多少次. * 但需要知道这个数组中最大的元素是多少,如果无法确定,就悲剧啦~ * * @param array目标数组: *           max数组中数据的最大值: * @return 返回一个包含重复次数最多的数(value)和重复次数(maxCount)的map集合: *         

详解Java中的数组与字符串相关知识

Java数组的定义和使用 如果希望保存一组有相同类型的数据,可以使用数组. 数组的定义和内存分配 Java 中定义数组的语法有两种: type arrayName[]; type[] arrayName; type 为Java中的任意数据类型,包括基本类型和组合类型,arrayName为数组名,必须是一个合法的标识符,[ ] 指明该变量是一个数组类型变量.例如: int demoArray[]; int[] demoArray; 这两种形式没有区别,使用效果完全一样,读者可根据自己的编程习惯选择

java String[]字符串数组自动排序的简单实现

如下所示: import java.util.Arrays; public class xulie { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String []str = {"abc","bca","cab","cba","aaa","111&

java 中文字符串数组按照音序排列

复制代码 代码如下: public class SortComparator implements Comparator{ public int compare(Object o1,Object o2) { try{ byte[] buf1 = ((String) o1).getBytes("unicode"); byte[] buf2 = ((String) o2).getBytes("unicode"); int size = Math.min(buf1.len

Java 生成随机字符串数组的实例详解

Java 生成随机字符串数组的实例详解 利用Collections.sort()方法对泛型为String的List 进行排序.具体要求: 1.创建完List<String>之后,往其中添加十条随机字符串 2.每条字符串的长度为10以内的随机整数 3.每条字符串的每个字符都为随机生成的字符,字符可以重叠 4.每条随机字符串不可重复 将涉及到的知识有: String.StringBuffer.ListArray.泛型.Collections.sort.foreach.Random等相关知识,算是

java生成随机字符串的两种方法

本文实例为大家分享了java生成随机字符串的具体代码,供大家参考,具体内容如下 import java.util.Random; public class CharacterUtils { //方法1:length为产生的位数 public static String getRandomString(int length){ //定义一个字符串(A-Z,a-z,0-9)即62位: String str="zxcvbnmlkjhgfdsaqwertyuiopQWERTYUIOPASDFGHJKLZ

ajax响应json字符串和json数组的实例(详解)

最近上班太忙,晚上抽空整理一下ajax请求中,后台返回json字符串和json数组的场景,以及前台的处理示例. 直接看代码. json字符串的后台响应 package com.ajax; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.serv

java 字符串反转的实例详解

java 字符串反转的实例详解 1.new StringBuffer("abcde").reverse().toString(); 2.通过char数组进行转换, 代码如下 package com.test.reverse; public class TestReverse { public static void main(String[] args) { // 声明任意字符串 String str = "abcde"; //将字符串转换成char[] char[

python随机生成库faker库api实例详解

废话不多说,直接上代码! # -*- coding: utf-8 -*- # @Author : FELIX # @Date : 2018/6/30 9:49 from faker import Factory # zh_CN 表示中国大陆版 fake = Factory().create('zh_CN') # 产生随机手机号 print(fake.phone_number()) # 产生随机姓名 print(fake.name()) # 产生随机地址 print(fake.address())

java 字符串截取的实例详解

java 字符串截取的实例详解 题目 在java中,字符串"abcd"与字符串"ab你好"的长度是一样,都是四个字符. 但对应的字节数不同,一个汉字占两个字节. 定义一个方法,按照指定的字节数来取子串. 如:对于"ab你好",如果取三个字节,那么子串就是ab与"你"字的半个,那么半个就要舍弃. 如果取四个字节就是"ab你",取五个字节还是"ab你". 仅考虑GBK和utf-8编码 实例代

Java编程思想对象的容纳实例详解

Java提供了容纳对象(或者对象的句柄)的多种方式,接下来我们具体看看都有哪些方式. 有两方面的问题将数组与其他集合类型区分开来:效率和类型.对于Java来说,为保存和访问一系列对象(实际是对象的句柄)数组,最有效的方法莫过于数组.数组实际代表一个简单的线性序列,它使得元素的访问速度非常快,但我们却要为这种速度付出代价:创建一个数组对象时,它的大小是固定的,而且不可在那个数组对象的"存在时间"内发生改变.可创建特定大小的一个数组,然后假如用光了存储空间,就再创建一个新数组,将所有句柄从

java 中模式匹配算法-KMP算法实例详解

java 中模式匹配算法-KMP算法实例详解 朴素模式匹配算法的最大问题就是太低效了.于是三位前辈发表了一种KMP算法,其中三个字母分别是这三个人名的首字母大写. 简单的说,KMP算法的对于主串的当前位置不回溯.也就是说,如果主串某次比较时,当前下标为i,i之前的字符和子串对应的字符匹配,那么不要再像朴素算法那样将主串的下标回溯,比如主串为"abcababcabcabcabcabc",子串为"abcabx".第一次匹配的时候,主串1,2,3,4,5字符都和子串相应的

java 制作验证码并进行验证实例详解

java 制作验证码并进行验证实例详解 在注册.登录的页面上经常会出现验证码,为了防止频繁的注册或登录行为.下面是我用java制作的一个验证码,供初学者参考,做完验证码之后,我们可以用ajax进行验证码验证. 功能一:验证码制作的代码,点击图片,验证码进行更换 /** * 显示验证码图片 */ public void showCheckCode(HttpServletRequest req, HttpServletResponse resp) throws ServletException, I

Java中IO流 RandomAccessFile类实例详解

Java中IO流 RandomAccessFile类实例详解 RandomAccessFile java提供的对文件内容的访问,既可以读文件,也可以写文件. 支持随机访问文件,可以访问文件的任意位置. java文件模型,在硬盘上的文件是byte byte byte存储的,是数据的集合 打开文件,有两种模式,"rw"读写."r"只读:RandomAccessFile raf = new RandomAccessFile(file, "rw");,文