Java char与String 相互转换

   今天晚上要被Java的char转String还有类数组烦死了,本来以为很简单的小程序,硬是写了1个多小时,可能是我最近太懒了,没有好好练习Java,所以反思一下。好了不废话了。看正文:

Java中char是一个基本类型,而String是一个引用类型。有时候我们需要在它们之间互相转换。

 

1.1String转换为char

在Java中将String转换为char是非常简单的。 
1. 使用String.charAt(index)(返回值为char)可以得到String中某一指定位置的char。 
2. 使用String.toCharArray()(返回值为char[])可以得到将包含整个String的char数组。这样我们就能够使用从0开始的位置索引来访问string中的任意位置的元素。

1.2char转换为String

将char转换为String大致有6种方法。总结如下:

1. String s = String.valueOf('c'); //效率最高的方法

2. String s = String.valueOf(new char[]{'c'}); //将一个char数组转换成String

3. String s = Character.toString('c');
// Character.toString(char)方法实际上直接返回String.valueOf(char)

4. String s = new Character('c').toString();

5. String s = "" + 'c';
// 虽然这个方法很简单,但这是效率最低的方法
// Java中的String Object的值实际上是不可变的,是一个final的变量。
// 所以我们每次对String做出任何改变,都是初始化了一个全新的String Object并将原来的变量指向了这个新String。
// 而Java对使用+运算符处理String相加进行了方法重载。
// 字符串直接相加连接实际上调用了如下方法:
// new StringBuilder().append("").append('c').toString();


6. String s = new String(new char[]{'c'});

2.类数组使用

Point[] points=new Point[n];//Point是一个类
        for(int i=0;i<n;i++) {
            System.out.print("请输入x:");
            points[i].setX(in.nextInt());//报错的第29行
            System.out.print("请输入y:");
            points[i].setY(in.nextInt());
        }

报错信息如下:

Exception in thread "main" java.lang.NullPointerException
at test.Main.zjd(Main.java:29)
at test.Main.main(Main.java:9)

分析:

Point[] points=new Point[n];//在定义完类数组后原以为可以直接用如上代码直接使用,但是报如上错误。
于是将29行设置成断点,开始Debug
运行到这里时我就发现了问题:

在变量列表中发现points[0],points[1]的value都是null

猛的一看似乎没什么问题,但是仔细想想,数组中的每个元素都是一个对象啊,既然是对象我们没有对他进行分配空间(没有new)又怎么去使用呢。

修改后的代码:

    Point[] points=new Point[n];
        for(int i=0;i<n;i++) {
            points[i]=new Point(); //解决:在这里对类数组中的元素申请分配空间。
            System.out.print("请输入x:");
            points[i].setX(in.nextInt());
            System.out.print("请输入y:");
            points[i].setY(in.nextInt());
        }

 

转自:https://www.cnblogs.com/iAmSoScArEd/p/9762674.html

 

  • 6
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值