精华内容
下载资源
问答
  • 2019-01-04 17:46:13

    假如有数组a:Array[String] =Array[String] ("a","b","c")

    直接打印print(a)就是一堆无意义的地址。

    要打印数组内容。要用mkString

    println(a.mkString(" & ")) //中间的连接符号可以自己选。不填的话默认直接相连。

    更多相关内容
  • Java打印String对象的地址

    千次阅读 2022-04-15 18:07:20
    当使用System.out.println()方法打印String类型对象时,会输出String对象代表的字符串,并不会输出对象的地址。因此,我们必须借助其他API来实现该功能。 java.lang.System类的方法 public static native int ...

    一、System函数

    当使用System.out.println()方法打印String类型对象时,会输出String对象代表的字符串,并不会输出对象的地址。因此,我们必须借助其他API来实现该功能。

    java.lang.System类的方法

    public static native int identityHashCode(Object x);
    Returns the same hash code for the given object as would be returned by the default method hashCode(), whether or not the given object’s class overrides hashCode(). The hash code for the null reference is zero.
    Params: x – object for which the hashCode is to be calculated
    Returns: the hashCode

    无论给定对象的类是否覆盖hashCode(),返回给定对象的哈希码与默认hashCode()方法返回的哈希码相同。空引用的哈希码是零。默认hashCode()方法,即Object对象中的hashCode()方法

    public native int hashCode();
    As much as is reasonably practical, the hashCode method defined by class Object does return distinct integers for distinct objects. (This is typically implemented by converting the internal address of the object into an integer)

    在合理可行的情况下,由 Object 类定义的 hashCode() 方法为不同的对象返回不同的整数。 (通常将对象的内部地址转换为整数),也就是说Object类的hashcode()方法返回对象的地址。

    二、实现代码

    一般,被打印的对象的形式为:java.lang.Object@1ff9dc36,由全限定类名+@+十六进制数组成。

    为了打印的字符串对象的形式和一般形式相同,我们还需要使用另外两个方法,

    String.class.getName() 返回全限定类名java.lang.String;
    Integer.toHexString(int) 将十进制数转换为十六进制数并返回;

    代码如下及运行结果:
    在这里插入图片描述
    参考代码:

    public class StringObjectAddrTest {
    
        public static void main(String[] args) {
    
            String str = "HelloWorld";
            System.out.println(String.class.getName() + "@" + Integer.toHexString(System.identityHashCode(str)));
    
            // 与Object对比
            System.out.println(new Object());
        }
    
    }
    
    
    展开全文
  • 主要介绍了Java中String判断为null或空及地址是否相等的问题,文中举了简单的例子对字符串类型的地址问题进行讲解,需要的朋友可以参考下
  • 关于java中String地址的问题

    千次阅读 2017-03-29 10:45:55
    来源: ... class Test1 { public static void main(String[] args) { String a = "abc";// 问题1,是不是在堆内存的常量池里放了“abc”然后在栈内存里放了a,a中存的是常量池里abc的地址? St

    来源:

    https://zhidao.baidu.com/question/1732129720808645067.html

    class Test1 {
    	
    	public static void main(String[] args) {
    		String a = "abc";// 问题1,是不是在堆内存的常量池里放了“abc”然后在栈内存里放了a,a中存的是常量池里abc的地址?
    		String b = new String("abc");
    		tt tt1 = new tt();
    		System.out.println(tt1);// 问题2,这个地方打出来的是什么东西,是地址吗?
    		System.out.println(a);// 问题3,这个地方打出来的为什么是a的值得,而不是问题2那样的东西?
    		System.out.println(b);// 问题4,既然是对象,为什么也会打出来值?而不是问题2那样的东西。
    		System.out.println(a.hashCode());// 可选题,hashCode不是打印地址吗?(该题值20分)
    		System.out.println(b.hashCode());
    		System.out.println(a == b);// 问题5,这里比的是地址吗?
    	}
    	
    }
    
    class tt {
    }

    System.out.pringln(Object); 首先它打印的是Object的toString()方法的返回值。
    问题1, 如你所说的那样。
    问题2,打印出来 什么 那要看你tt的toString() 方法是怎么实现的,如果没有toString()方法,那tt会默认继承Object的toString()方法,而Object的toString()方法的实现就是返回对象的地址值。
    问题3, String类 同样也继承了Object,但是 String类 重写了Object的toString()方法,重写的目的就是返回字符串值本身,而非地址值。
    问题4,同问题3.
    a.hashCode()返回的是哈希值(一个int类型的数),System.out.println(int类型)的时候打印的也是int值本身
    问题5,比较的是地址值。

    总结: 打印出来什么是看对象类有没有实现toString()方法,如果没有那就打印对象的地址值,如果对象类重写了toString()方法,那就要看方法是怎么实现的了。


    展开全文
  • 为什么打印String对象,不是地址值

    千次阅读 2017-07-18 19:14:47
    首先看一下API中String类的toString()方法: toString public String toString() 返回此对象本身(它已经是一个字符串!)。 指定者:接口 CharSequence 中的 toString覆盖:类 Object 中的 toString 返回:字符...

           我们知道当打印对象的引用时,会默认调用Object类的toString()方法,返回的是一个字符串表示,该字符串的形式为类名+@+十六进制的哈希值;为什么String打印的不是这样一个地址值呢?因为String类继承自Object类,重写了从Object类拿到的toString()方法,返回的是该该对象本身,即字符串。详见下面API中Object的toString()方法和String类的toString()方法:


    API中Object类的toString()方法:

    public String toString()
    返回该对象的字符串表示。通常, toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。

    Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:

    getClass().getName() + '@' + Integer.toHexString(hashCode())
     

    返回:
    该对象的字符串表示形式。

    API中String类的toString()方法:

    toString

    public String toString()
    返回此对象本身(它已经是一个字符串!)。

    指定者:
    接口 CharSequence 中的 toString
    覆盖:
    Object 中的 toString
    返回:

    字符串本身。


    扩展:String类的equals()方法:

    Object类的equals()方法,默认是比较对象的地址值,一般使用时会重写该方法,用来比较对象的属性值。

    String类继承Object类的equals()方法,并重写了该方法,比较的是字符串的内容。详见API:


    public boolean equals(Object anObject)
    将此字符串与指定的对象比较。当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true

    覆盖:
    Object 中的 equals
    参数:
    anObject - 与此 String 进行比较的对象。
    返回:
    如果给定对象表示的 String 与此 String 相等,则返回 true;否则返回 false
    另请参见:
    compareTo(String), equalsIgnoreCase(String)





    展开全文
  • 打印输出会调用Object.toString,String重写toString()返回值时:return this 但是这不还是一个地址值吗? 那为什么输出的是一个字符串呢而不是地址呢? 忘大神能够指点,先行谢过啦
  • String s = new String("abc"); System.out.println(s); 这输出是s的内容,这明明是对象的引用啊,是地址啊 如果这样 Student student =new Student(); System.out.println(student);却打印地址
  • 然而我们的String类里重写了toString(),它返回的是String自己,String是什么呢,String其实就是字符数组(),它内部封装了一个字符数组,所以打印字符串就是打印字符数组,而不是地址 关于Java中String内存地址的...
  • String传递还是引用传递

    万次阅读 多人点赞 2018-06-28 09:53:30
    String传递还是引用传递 今天上班时,同事发现了一个比较有意思的问题。他把一个String类型的参数传入方法,并在方法内改变了引用的。 然后他在方法外使用这个,发现这个String还是之前的,并没有改变。 ...
  • 最近看到一道关于String的面试题,差点让我以为String传递,就是下面这个例子,体验下: ​ public class Demo{ public static void main(String[] args) { Demo d = new Demo(); String str = "BEA"; d....
  •   最近看到一道关于string的面试题,差点让我以为string传递,就是下面这个例子,体验下: 1 2 3 4 5 6 7 8 9 10 11 12 public class ...
  • 关于C语言打印string类字符串的问题

    千次阅读 2019-05-02 10:42:00
    首先因为printf函数输出字符串是针对char *的,即printf只能输出c语言的内置数据,而string不是c语言...因此该怎么打印string字符串呢? 1、利用string的成员函数c_str()打印,如下: string q = "123ABCD"; p...
  • 打印对象和toString方法

    千次阅读 2021-03-15 16:19:43
    JAVA对象java对象是都是Object类的实例,都可直接调用... 6.2.1打印对象和toString方法先看下面程序:程序清单:codes/06/6-2/PrintObjectjavapublic classPrintObject{public static voidmain(String args[]){Person...
  • 而对于对象类型,java 参数传递的是对象的引用,相当于对象在堆里面的内存地址。 我们分析下一下代码: public class StringTransactTest { public static void main(String[] args) { Stri...
  • Java中打印对象内存地址

    千次阅读 2021-10-03 17:24:36
    java是获取不到对象的地址的,但是你可以获取hashcode,对象的hashcode在某种意义上就相当于对象的地址了,hashCode是用来在散列存储结构中确定对象的存储地址的。 既然Java中对象内存地址不能获取到,所以这篇...
  • 通过反射改变String类的

    千次阅读 2018-07-26 10:10:08
    为什么String被设计成不可变 很多人挺感兴趣的,那么设计成不可变是不是就真的不可修改呢,各位看官往下看。 通常认为String类对象是不可修改的,例如: String s="abc"; s="123"; ...
  • 问题: ArrayList 中添加对象,打印出来是地址值,无法显示正常可读内容。 解决办法: 重写 toString 方法,迭代 for循环遍历 实例 : 1. 创建一个List,在List 中增加三个工人,基本信息如下表: 2. 在li4 ...
  •   “Java中直接打印对象,输出的是对象的地址值(对象的类没有重写toString方法)”,这是初学者在学Java基础语言的时候,大多数教程都是这么介绍的,初学者也会认为这就是对象在内存中存储的位置,如输出的地址值...
  • python获取内存地址上存储的

    千次阅读 2019-10-04 02:34:59
    但是反过来,怎么获取内存地址上存储的? 先看一段代码: from ctypes import string_at from sys import getsizeof from binascii import hexlify a = 2333 print(hexlify(string_at(id(a),g...
  • A:在我们没有学习Object类的toString方法前,我们打印引用类型对象名,打印出来的是地址值,那么String作为引用类型,打印的应该也是地址值呀.为什么它打印出来的就是字符串本身的值呢. 代码举例: String str = "abc";...
  • 首先println方法对数组的处理是先转化为String类型,我们可以进入println源码看一下,我是创建了一个String数组进去看了下 public void println(Object x) { String s = String.valueOf(x); synchronized (this) {...
  • 【c++】c++中如何打印字符串的地址

    千次阅读 2015-10-30 16:00:43
    在C++中,如果cout一个字符数组的话,那么它会沿着这个地址,一直输出这个字符串,直到遇到'\0',例如:  char*c="cadn\0hello";  cout 输出的结果是:cadn 如果我们自作聪明的想输出第一个字符的地址,例如这样...
  • 今天复习java时,突然注意到了一句以前没有注意过的一句话,String 是final修饰的,其是不可变的。当时看的一脸懵逼,String str = "abc"; str = "abcde"这两行代码没有任何的错误的。上网百度了许久,还是整理...
  • String详解

    千次阅读 2020-10-24 09:11:47
    这篇博客主要介绍了String字符串,包括在内存中的存储原理和常用的方法。
  • 基于JDK1.8的String详解

    千次阅读 2019-05-16 20:09:43
    String 类的定义 public final class String implements java.io.Serializable, Comparable<String>, CharSequence {} 这是一个用 final 声明的常量类,不能被任何类所继承,而且一旦一个String对象被创建, ...
  • C++中的string类用法简介

    万次阅读 多人点赞 2019-08-21 17:21:17
    本文主要介绍C++中的string类的常见用法。 1. 概述 string是C++标准库的一个重要的部分,主要用于字符串处理。可以使用输入输出流方式直接进行string操作,也可以通过文件等手段进行string操作。同时,C++的算法库...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 226,105
精华内容 90,442
关键字:

怎么打印string的地址值