笑谈字符串与字符、字节数组的关系 | 带你学《Java面向对象编程》之三十一

上一篇:Java世界入口:主方法分析 | 带你学《Java面向对象编程》之三十
【本节目标】
通过阅读本节内容,你将学习到String字符串与字符、字节数组之间转换的方法,并对字符串的相关操作有进一步的掌握。

字符串与字符数组

在JDK1.9以前,所有的String都利用字符数组实现了包装的处理,所以在String类中是提供有相应的转换处理方法的,这些方法包含有构造方法与普通方法两类。

No. 方法名称 类型 描述
01 public String(char[] value) 构造 将传入的全部字符数组变为字符串
02 public String(char[] value,int offset, int count) 构造 将部分字符数组变为字符串
03 public char charAt(int index) 普通 获取指定索引位置的字符
04 public char[] toCharArray() 普通 将字符串中的数据以字符数组的形式返回

范例:观察charAt()方法

public class StringDemo{
   public static void main(String args[]) {
       String str = “www.mldn.cn” ;
       char c = str.charAt(5) ;
       System.out.println(c) ;
   }     //输出l     
}

利用charAt()是可以获取某一个指定索引位置的字符,但是程序之中的索引下标都是从0开始。
在程序语言之中,最早一直强调的就是字符串应该使用字符数组进行描述,所以这一操作在String类的方法中也是有所体现的。
范例:实现字符串与字符数组的转换

public class StringDemo{
   public static void main(String args[]) {
       String str = “helloworld” ;
       char [] result = str.toCharArray() ;   //将字符串变为字符数组
       for (int x = 0 ; x < result.length ; x ++) {
          result[x] -= 32 ;     // 编码减少32
}
//将处理后的字符数组交给String变为字符串
     String newStr = new String (result) ;
     System.out.println(newStr) ;         //HELLOWORLD
     System.out.println(new String(result , 0, 5)) ;     //HELLO
   }         
}

现在假设说要求做一个验证功能,判断某一个字符串中的数据是否全部由数字所组成。那么这个时候可以采用如下的思路:

  • 如果要想判断字符串中的每一位最好的做法是将字符串变为字符数组;
  • 可以判断每一个字符是否在数字的范围之内(’0’~’9’);
  • 如果有一位不是数字则表示验证失败。

范例:实现字符串的数据检查

public class StringDemo{
   public static void main(String args[]) {
       String str = “helloworld” ;
       System.out.println(isNumber(str) ? “由数字所组成” : “不是由数字所组成”) ;          //执行结果:不是由数字所组成
       System.out.println(isNumber(“123”) ? “由数字所组成” : “不是由数字所组成”) ;         //执行结果:是由数字所组成
   } 
    //该方法主要是判断字符串是否由数字所组成 
   public static Boolean isNumber(String str) {
       char [] result = str.toCharArray() ;    //将字符串变为字符数组
       for (int x = 0 ; x < result.length ; x ++) {   //依次判断
          if (result[x] < ‘0’ || result[x] > ‘9’) {
            return false ;         //后面不再判断
          }
       }
       return true ;
   }      
}

在实际开发之中处理中文的时候往往使用char类型,因为其可以包含中文数据。

字符串与字节数组

字符串与字节数组之间也可以实现转换的处理操作,但是需要提醒一下,当进行了字符串与字节转换时,其主要目的是为了进行二进制的数据传输,或者是进行编码转换。

No. 方法名称 类型 描述
01 public String(byte[] bytes) 构造 将全部的字节数组变为字符串
02 public String(byte[] bytes, int offset,int length) 构造 将部分字节数组变为字符串
03 public byte[] getBytes() 普通 将字符串转为字节数组
04 public byte[] getBytes(String charsetName) throws UnsupportedEncodingException 普通 编码转换

范例:观察字节与字符串的转换

public class StringDemo{
   public static void main(String args[]) {
       String str = “helloworld” ;
       byte data[] = str.getBytes() ;   //将字符串变为字节数组
       for (int x = 0 ; x < data.length ; x ++) {
          data[x] -= 32 ;
       }
       System.out.println(new String(data)) ;       //执行结果:HELLOWORLD
       System.out.println(new String(data , 0 ,5)) ;   //执行结果:HELLO
   }      
}

字节本身是有长度限制的,一个字节最多可以保存的范围是:-128~127之间。
想学习更多的Java的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学

下一篇:教你成为字符串连连看高手 | 带你学《Java面向对象编程》之三十二
更多Java面向对象编程文章查看此处

上一篇:Windows phone 8 学习笔记(4) 应用的启动(转)


下一篇:tomcat注册成windows服务 (截图说明一目了然)