getstring和tostring有啥区别吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了getstring和tostring有啥区别吗?相关的知识,希望对你有一定的参考价值。
getstring和tostring有什么区别吗?
肯定有区别了,完全不一样 怎么就扯到一起来了呢 , tostring()方法是指的把对象转换成字符串的形式, 而 getstring()是指取得string类型数据用的,比如从数据库取数据getstring(0),getstring(1).........n..分别取数据库的第n条数据。 参考技术A getstring 是把数据从数据库查询的记录集中以字符串的方式读出来,而toString是Object类的一个方法,java中任何对象都可以调用toString()方法 参考技术B package com.one;public class Test
/*public String toString()
return "isOne isOne";
*/
public String getString()
Test test = new Test();
return "isTwo isTwo";
public static void main(String[] args)
Test test = new Test();
// System.out.println(test); //toString调用对象方法 转成String类型
System.out.println(test.getString()); //get方法 如果不加getString() 输出的是地址
追问
哥我已经学业N年了,你才来回答太迟了
追答呵呵
参考技术C 这些自己查API文档就行了,里面详细得很挑战头条三面?toString()String.valueOf(String)强转,有啥区别?
最近看到这样一个问题,说toString()、String.valueOf、(String)强转,有啥区别?重点是说,这是头条三面?
咱也不知道真的假的,那就分析分析这个问题吧!
直观分析
首先我们看这三头货,什么toString()、String.valueOf、(String)强转?有啥区别?就问你是不是很像,是不是都有一个String?
说白了,这三个都是将XX给变成String,简称变身String的方法
接下来一个一个的分析下!
toString()
这个方法真正做到那种见名知意,也就是看到这个名字,我就知道它是干嘛的,所以平常咱们在命名的时候也要注意,你起的名字要有意义,看到这个名字我知道这个东西有什么用~
别一上去就整个:yydf
这啥玩意?你是要整个yyds,整个全世界最厉害的类,然后一不小心,手抖敲错字母了吗?
接着来看我们的toString,这玩意怎么用?
Integer a = 666;
a.toString();
我们应该比较熟悉这种,就是在一些JavaBean中也就是我们的实体类或者pojo中:
这里的toString其实是重写了Objec类中的toString:
也即是说,如果你自己定义一个类,使用toString的话,那就是直接调用Objec类中的该方法了,但是一般我们都会重写该方法,比如integer这个包装类中:
发现这里的toString就与Objec中的不一样,进行了重写,我们可以这样使用:
Integer a = 666;
String b = a.toString();
因为在Object中含有toString方法,又因为Object是所有类的父类,因此,所有的引用类型都可以使用toString方法,只不过大部分派生类都会重写该方法!
在Java中,数据分为基本数据类型和引用数据类型,而基本类型是无法使用toString方法的:
不过在使用toString的时候我们要注意一下null值的问题:
比如这样的情况,编译是没问题的,但是运行就报错了:
所以这里一定要注意,不然就掉坑了!
那对于toString这个方法,所有的引用类型都可以使用,大部分派生类会重写,使用要注意null问题,不然就会遇到空指针异常!
鉴于大部分人都是不认真的,所以一般就不推荐使用该方法了,但是如果有些情况使用toString性价比更高的话,那就用呗,做人,不能太死板了!
String.valueOf()
该方法属于String中的一个静态方法,使用起来相对来说会方便点,嗯,是这么回事:
而且我们发现,对于基本类型,这个方法也是可以进行String的转变的,我们可以看下它的源码:
发现没有,当我们传入的是一个基本类型的时候,实际上最终还是调用的toString:
我们发现在String当中这是一个重载函数,而且其中一个可以传入Object作为参数,这说明啥?
也就意味着,啥玩意都可以往里面放,都可以帮助你转变成String,我们试下:
输出结果:
再看下null值问题:
输出结果:
发现没有,并没有给你报错,而是给你返回了一个字符串“null”,看源码:
原来这里是做了判空处理的,这个要比直接调用toString更加的安全了!
总结来说,就是String.valueOf()方法不仅可以用于引用类型,也可以用于基本类型(实际调用的是其包装类),不放实际上都是调用了toString方法,不过在以Object为参数的方法中增加了盼空处理,避免了空指针异常!
所以,一句话:
String.valueOf()方法比toString()方法好用,推荐
(String)强转
对于这种强转形式,大家应该对基本类型的强制转换比较熟悉,见的也比较多,其实吧,在基本类型中进行强制转换还可以……
但是吧,这个字符串强转真不咋地,也不怎么推荐使用,你看:
表面来看,想基本类型和引用类型都是无法进行强转的,不过对于Object类型在编译的时候并没有什么问题,但是,这可不代表运行无错啊:
发现会报一个类型转换错误,也就是无法转换,不过对于null值问题:
发现这个对于null是可以强转的,一般在使用这个强转的时候,我们可以这样:
看下结果:
是不是更加友好,避免报错,所以在使用强转的时候,我们可以使用instanceof来进行类型检查,得到一个更加友好的提示!
不过,一般来说,还是不太推荐使用强转,就冲这名字,它就不太靠谱,你觉得呢?
+“”
这是啥呢?看:
运行也是没错的:
这种方式用过吗?
其实这种方式就相当于字符串直接拼接,对于这种形式我们可以反编译一个代码看看:
其实也就是先创建一个StringBuilder,然后通过append的方式拼接两个变量,最后在调用toString的方式!
对于这种方式,其实是不太建议的,因为它的效率不太行,也就是不建议直接拼接字符串的!
OK,如果你对字符串拼接比较感兴趣,可以私下自行研究下,今天的分享就到这里了!
可以说下,你都是使用哪种方式呢?
以上是关于getstring和tostring有啥区别吗?的主要内容,如果未能解决你的问题,请参考以下文章
数组中的toString,toLocalString,valueOf方法有啥区别
JsonNode 中的 asText() 和 toString() 有啥区别?
问: js要传string型参数,可以直接将变量用toString()方法转换吗?
java中Collection方法里面的Object[] toArray() 和 <T> T[] toArray(T[] a)有啥区别吗?