首页 > 编程语言 >java (String)强制转换与toString()方法

java (String)强制转换与toString()方法

时间:2022-12-06 14:36:28浏览次数:39  
标签:java String Object System Member toString println

1. Object.toString()介绍

Object中是自带有toString()方法的,也就是说java中的所有类的对象都是可以转换为字符串的。

首先,先看看Object.toString()的默认实现

    public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

默认的toString是返回 类名 + @ + HashCode值
Member.java

class Member {
    private String name;

    public static void main(String[] args) {
        Member member = new Member();
        System.out.println(member.toString());
    }
}

控制台输出如下图

2. (String)强制转换 与 toString()

当Object向下转型为String时,可以使用(String)做强制类型转换。

但如果其他对象转为String,则需要使用toString()方法,一般为了方便使用,toString()方法都是要在子类中重写。

class Member {
    // Object 是所有类的傅雷,此处为了方便使用,重写了toString()方法
    @Override
    public String toString() {
        return "Member{这是一个Member}";
    }
}

public class StringTest {
    public static void main(String[] args) {
        // 向上转型
        Object objA = "Hello";
        Object objB = new Member();

        // 使用(String)强转
        String strA = (String) objA;
        // 使用重写后的toString()转为String
        String strB = objB.toString();

        System.out.println(strA);
        System.out.println(strB);

        Member memA = (Member) objB;
        System.out.println(memA);

    }
}

控制台输出如下:

3. (String) 存在的问题

当Stirng为null时,(String)的强制转换会有空指针报错NullPointerException

class StringTest2 {
    public static void main(String[] args) {
        String s1 = null;
        Object obj = s1;

        String s2 = obj.toString();
        System.out.println(s2);

        String s3 = (String) obj;
        System.out.println(s3);
    }
}

控制台报错

4. 推荐使用

保险的做法是:使用强制转型,在确定不为空的情况下,两种方式对String操作效果是一样的(只有String是,其它的类都没有,其它的类如果要变为指定类型只能够使用强制向下转型)。

标签:java,String,Object,System,Member,toString,println
From: https://www.cnblogs.com/xiangningdeguang/p/16955107.html

相关文章

  • 有关JavaSe基础的反射知识总结
    反射这门技术在说之前首先来介绍一下动态语言和静态语言动态语言:在服务器运行的期间可以改变其结构的语言,在运行时代码可以根据某些条件来改变自身的结构,我们目前学习到的......
  • java方法的总结
    1.方法的作用:封装一段代码结构,可以被重复调用以提高的复用性,提高开发效率,让程序逻辑更清晰2.方法的完整的格式 修饰词返回值方法名(形参列表,形参列表){ . .. ......
  • Java中的Scanner用法解析
    (10条消息)Java中的Scanner用法解析_普通网友的博客-CSDN博客_javascannerjava-Picocli-快速构建Java命令行程序_个人文章-SegmentFault思否......
  • java最基本的判断与循环大一知识点
    1,if单选择结构 语法: if(布尔型表达式){ //如果为true(对)的表达方式 }2.if双选择结构 语法: if(布尔型表达式){ //如果为true(对)的表达方式 }else{ //为false(否)的......
  • Java 流(Stream)、文件(File)和IO
    流(Stream):一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。 ......
  • java读取csv文件
    java读取csv文件 /***读取CSV文件内容*@paramcsvFileName*@throwsIOException*/publicstaticvoidreadCSVAndWrite(StringinputCsvFileName......
  • JavaScript文件分片上传,断点续传
    ​前言一、SpringMVC简介1.1、SpringMVC引言为了使Spring有可插入的MVC架构,SpringFrameWork在Spring基础上开发SpringMVC框架,从而在使用Spring进行WEB开发时可以......
  • java 使用hutool工具进行MD5加密
    引入依赖<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.5</version></dependency>MD5加密publicstati......
  • 05 Java 数组
    Java数组一、什么是数组数组是相同类型数据的有序集合数组描述的是相同类型的若干个数据,按照一定的顺序排列组合而成其中每一个数据称为数组元素,每个数组元素可以通过......
  • Java log框架使用指南
    议题如下:引言Java世界的log框架发展历程什么是绑定实现(bingding)什么是覆盖实现(override)什么是桥接适配(bridge/route)日志jar包之间的冲突Spring-boot为我们做了什么?Reference......