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

简介: 本节主要为读者介绍了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面向对象编程文章查看此处

相关文章
|
27天前
|
存储 安全 Java
Java零基础-字符串详解
【10月更文挑战第18天】Java零基础教学篇,手把手实践教学!
100 60
|
16天前
|
缓存 算法 Java
本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制
在现代软件开发中,性能优化至关重要。本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制。通过调整垃圾回收器参数、优化堆大小与布局、使用对象池和缓存技术,开发者可显著提升应用性能和稳定性。
36 6
|
1月前
|
Java 数据库
案例一:去掉数据库某列中的所有英文,利用java正则表达式去做,核心:去掉字符串中的英文
这篇文章介绍了如何使用Java正则表达式从数据库某列中去除所有英文字符。
50 15
|
1月前
|
Java
JAVA易错点详解(数据类型转换、字符串与运算符)
JAVA易错点详解(数据类型转换、字符串与运算符)
50 4
|
2月前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
52 3
|
2月前
|
SQL Java 索引
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
18 2
|
2月前
|
存储 移动开发 Java
java核心之字符串与编码
java核心之字符串与编码
23 2
|
2月前
|
Java
Java实现:将带时区的时间字符串转换为LocalDateTime对象
通过上述方法,你可以将带时区的时间字符串准确地转换为 `LocalDateTime`对象,这对于处理不需要时区信息的日期和时间场景非常有用。
769 4
|
2月前
|
算法 Oracle Java
Java字符串拼接技术演进及阿里巴巴的贡献
本文主要讲述了Java字符串拼接技术的演进历程,以及阿里巴巴贡献的最新实现 PR 20273。
132 11
|
2月前
|
算法 Oracle Java
Java字符串拼接技术演进及阿里巴巴的贡献
本文主要讲述了Java字符串拼接技术的演进历程,以及阿里巴巴贡献的最新实现 PR 20273。
下一篇
无影云桌面