String 转换 | 学习笔记

简介: 快速学习 String 转换。

开发者学堂课程【Java面试疑难点串讲1:面试技巧及语言基础:String 转换】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/24/detail/492


String 转换


内容介绍

一、String 转换


一、String 转换

用(String)强转,什么场景使用 toString() 强转?

Object 类之中提供有一个 toString() 方法,那么也就意味着所有类的对象都具有此方法。

那么对于此方法只有一个核心作用:在于将对象的内容变为字符串。

首先来观察一下 Object.toString() 方法的实现:

public String toString() {

return getClass().getName()+@+Integer.toHexString(hashCode());

}

如果说现在发生了 String 向 Object 类的向上转型(不去考虑出于什么样原因才需要进行转型)

package cn.mldn.demo;

class Member {

@Override

Public String toString() {

Return”是一个人。”;

  }

}

public class TestStringType {

public static void main(String[ ] args) {

//忽略转型的目的,只关心技术的实现

Object objA=Hello;  //StringObject转型,会使用不同的类加载器

Object objB=new Member();  //自定义类,会使用不同的类加载器

//要取出数据,需要考虑类型

String strA=(String) objA;   //获取内容

//StringObject子类,所以现在的toString()调用的是String类被覆写的方法

String strB=objA.toString();  //获取内容

System.out.println(strA);    //向下转型获得的

System.out.println(strB);    //通过子类方法覆写获得的

//以上的两种处理方法一样,只限于系统提供String类,但是如果是自定义类

Member memA=(Member) objB;  //向下转型

System.out.println(memA.toString()); //调用的是被子类所覆盖写过的方法

//但是如果说你现在调用的是objB类的toString(),则就表示你要转换的类型不是Member,而是String

String str=objB.toString();

如果要是具体点说:使用 toString( )容易造成空指向异常;

package cn.mldn.demo;

public class TestStringType {

public static void main(String[ ] args) {

//忽略转型的目的,只关心技术的实现

String str = null;

Object objA=str;  //StringObject转型,会使用不同的类加载器

//要取出数据,需要考虑类型

String strA=(String) objA;   //获取内容

System.out.println(strA);    //向下转型获得的,null

//StringObject子类,所以现在的toString()调用的是String类被覆写的方法

String strB=objA.toString();  //获取内容

System.out.println(strB);    //通过子类方法覆写获得的

}

}

总结:如果你现在使用的是 String,那么在不为 null 的情况下,使用强制转型和 toString() 方法效果一样,但是如果为 unl l,则就会出现 NullPointerException,保险的做法是:使用强制转型,但是如果确定不为 unll 的情况下,则两种方式对 String 操作的效果是一样的(只有String是,其他的类都没有,其他的类如果要变为指定类型只能够使用强制向下转型)。


相关文章
|
6天前
|
存储 JSON NoSQL
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
这篇文章是关于Redis基本数据结构的学习笔记,包括了String、Hash、Set、List和SortedSet的介绍和常用命令。文章解释了每种数据结构的特点和使用场景,并通过命令示例演示了如何在Redis中操作这些数据结构。此外,还提供了一些练习示例,帮助读者更好地理解和应用这些数据结构。
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
|
2月前
|
存储 C++
【C/C++学习笔记】string 类型的输入操作符和 getline 函数分别如何处理空白字符
【C/C++学习笔记】string 类型的输入操作符和 getline 函数分别如何处理空白字符
32 0
|
4月前
|
编译器 C++
【C++】学习笔记——string_5
【C++】学习笔记——string_5
18 0
|
4月前
|
编译器 C语言 C++
【C++】学习笔记——string_4
【C++】学习笔记——string_4
23 0
|
4月前
|
C语言 C++
【C++】学习笔记——string_3
【C++】学习笔记——string_3
22 0
|
4月前
|
存储 编译器 C++
【C++】学习笔记——string_2
【C++】学习笔记——string_2
22 0
|
4月前
|
算法 C++ 容器
【C++】学习笔记——string_1
【C++】学习笔记——string_1
23 0
|
5月前
|
Java Redis
redis-学习笔记(Jedis string 简单命令)
redis-学习笔记(Jedis string 简单命令)
37 2
|
5月前
|
NoSQL Java Redis
redis-学习笔记(string , hash , list , set , zset 前置知识)
redis-学习笔记(string , hash , list , set , zset 前置知识)
28 0
redis-学习笔记(string , hash , list , set , zset 前置知识)
|
5月前
|
存储 NoSQL Java
redis-学习笔记(string)
redis-学习笔记(string)
32 0