精华内容
下载资源
问答
  • 繁星点点滴滴严格来讲,java无法重写/覆盖任何...所以,无法做到你说的,重写数组toString方法然后下次打印数组的时候就会按照自定义的方式打印了。比如classParent{publicvoidm(){...}}classChildentendsParent{...

    18131f18b53c4c5cfd63f4d5614eb94e.png

    繁星点点滴滴

    严格来讲,java无法重写/覆盖任何类本身的方法,只能通过继承,在子类中重写,但此时原先那个类的方法实际上并没有改变。所以,无法做到你说的,重写数组的toString方法然后下次打印数组的时候就会按照自定义的方式打印了。比如class Parent { 

       public void m() {

            ...

        }

    }

    class Child entends Parent {  

      public void m() {

            ...

        }

    }

    Parent p = new Parent();

    p.m();最终p调用的仍然是自己的m方法,而不是子类中定义的。不过这一问题对某些其他语言来说倒是可以实现,比如javascript,python。这些语言可以直接改变某个类,改变后可影响到所有该类的实例(无论是之前创建的还是之后创建的)。第二个问题,数组是java的内置类型,其并不是由java语言实现的。要想找实现代码就得去虚拟机的源码中找了。

    展开全文
  • * 采用for循环的形式将数组输出 */ for (int i = 0; i ;i++) { System.out.print(merge[i]); } } class Solution { public int[] merge(int[] nums1, int m, int[] nums2, int n) { int i = m - 1, j =...

    在这里插入图片描述

    package com.javamvc.learning.leetcode;

    import java.lang.reflect.Array;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;

     public class LeetCode88MergeSortedArray {
    
       public static void main(String[] args) {
    	
    
    	LeetCode88MergeSortedArray let88 = new LeetCode88MergeSortedArray();
    	Solution solution = let88.new Solution();
    	
    	int []nums1 = {1,2,3,0,0,0};
    	int []nums2 = {2,5,6};
    	int[] merge = solution.merge(nums1, 3, nums2, 3);
    	
    	/*
    	     * 采用for循环的形式将数组输出
    	 */
    	for (int i = 0; i < merge.length;i++) {
    		System.out.print(merge[i]);
    	}
    }
    
    class Solution {
        public int[]  merge(int[] nums1, int m, int[] nums2, int n) {
            
                int i = m - 1, j = n - 1, k = m + n - 1;
            while(i >=0 && j >= 0) {
                if(nums1[i] > nums2[j]) nums1[k--] = nums1[i--];
                else nums1[k--] = nums2[j--];
            }
            while(j >= 0) nums1[k--] = nums2[j--];
            /*
             * 
                                   * 采用封装好的toString的方法进行输出
             */
            System.out.println(Arrays.toString(nums1)+"\t11111");
            System.out.println(Arrays.toString(nums2)+"\t2");
            System.out.println(nums1+"\t3");
            System.out.println(nums2+"\t4");
    		return nums1;
            
    		}
    
    	@Override
    	public String toString() {
    		return "Solution [getClass()=" + getClass() + ", hashCode()=" + hashCode() + ", toString()="
    				+ super.toString() + "]";
    	}
    		
    	}
    	}
    

    在这里插入图片描述

    展开全文
  • JAVA数组toString()方法不能直接输出数组内容?

    万次阅读 多人点赞 2018-03-15 11:09:26
    问题描述:我定义了一个类,类名是Job,当我输出Job.toString()是可以按我重载的toString方法输出的,但是如果输出jobs[]这个数组时,只会输出[Lmodel.Job;@45e228。那么这是为什么呢?怎么输出数组内容呢? 解决...

    问题描述:我定义了一个类,类名是Job,当我输出Job.toString()是可以按我重载的toString方法输出的,但是如果输出jobs[]这个数组时,只会输出[Lmodel.Job;@45e228。那么这是为什么呢?怎么输出数组内容呢?

    解决方法:使用Arrays.toString(jobs)来输出。,

    分析: java里,所有的类,不管是java库里面的类,或者是你自己创建的类,全部是从object这个类继承的。object里有一个方法就是toString(),那么所有的类创建的时候,都有一个toString的方法。这个方法是干什么的呢?
      首先我们得了解,java输出用的函数print();是不接受对象直接输出的,只接受字符串或者数字之类的输出。
      当print检测到输出的是一个对象而不是字符或者数字时,那么它会去调用这个对象类里面的toString 方法,输出结果为[类型@哈希值]。Object类中的toString()方法的源代码如下:

    /**
     * Returns a string representation of the object. In general, the 
     * <code>toString</code> method returns a string that 
     * "textually represents" this object. The result should 
     * be a concise but informative representation that is easy for a 
     * person to read.
     * It is recommended that all subclasses override this method.
     * <p>
     * The <code>toString</code> method for class <code>Object</code> 
     * returns a string consisting of the name of the class of which the 
     * object is an instance, the at-sign character `<code>@</code>', and 
     * the unsigned hexadecimal representation of the hash code of the 
     * object. In other words, this method returns a string equal to the 
     * value of:
     * <blockquote>
     * <pre>
     * getClass().getName() + '@' + Integer.toHexString(hashCode())
     * </pre></blockquote>
     *
     * @return  a string representation of the object.
     */
    public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

    而数组类中并没有对此方法重写(override),仅仅是重载(overload)为类的静态方法(参见java.util.Arrays)。所以,数组直接使用toString()的结果也是[类型@哈希值]。所以数组转为字符串应写成:Arrays.toString(a) 

     这种方法的toString()是带格式的,也就是说输出的是[a, b, c],如果仅仅想输出abc则需用以下两种方法

    方法1:直接在构造String时转换。

    char[] data = {'a', 'b', 'c'};
    String str = new String(data);

    方法2:调用String类的方法转换。

    String.valueOf(char[] ch)

    转自:https://www.cnblogs.com/ningvsban/p/3955483.html

    展开全文
  • 数据结构之数组重写 package com.ws.scala; public class Array { private E[] data; private int size; //实际有值长度 /** * 默认构造 * 默认数组容量指定为10 */ public Array() { this(10); } ...
    package com.ws.scala;
    
    public class Array<E> {
    
        private E[] data;
        private int size; //实际有值长度
    
        /**
         * 默认构造
         * 默认数组容量指定为10
         */
        public Array() {
            this(10);
        }
    
        /**
         * 指定数组的容量
         *
         * @param capacity
         */
        public Array(int capacity) {
            data = (E[])new Object[capacity];
        }
    
        /**
         * 赋值数组
         *
         * @param data
         */
        public Array(E[] data) {
            this.data = data;
        }
    
        public void addFirst(E e) {
            if (size == 0) {
                addLast(e);
                return;
            }
            data[0] = e;
        }
    
        public void addLast(E e) {
            if (isFull()) {
                //throw new IllegalArgumentException("add fail ,Array is full");
                //扩容为原来容量的2倍
                this.resetSize(this.data.length << 1);
            }
            data[size] = e;
            size++;
        }
    
        /**
         * 在指定索引地方插入
         *
         * @param index
         * @param e
         */
        public void addInsert(int index, E e) {
            if (isFull()) {
                this.resetSize(this.data.length << 1);
                //throw new IllegalArgumentException("array size is full ,add fail");
            }
    
            if (index > size || index < 0) {
                throw new IllegalArgumentException("index out of range");
            }
    
            //倒着来
            for (int i = size; i > index; i--) {
                //后面的一个等于前面的一个
                data[i] = data[i - 1];
            }
    
            data[index] = e;
            size++;
        }
    
        public boolean isFull() {
            if (size >= data.length)
                return true;
            return false;
        }
    
    
        public E[] getData() {
            return data;
        }
    
        public void setData(E[] data) {
            this.data = data;
        }
    
        public int getSize() {
            return size;
        }
    
        public void setSize(int size) {
            this.size = size;
        }
    
        @Override
        public String toString() {
            StringBuilder sb = new StringBuilder();
            sb.append("[");
            for (int i = 0; i < size; i++) {
                sb.append(data[i]);
                if (i != size - 1) {
                    sb.append(",");
                }
            }
            sb.append("]");
            System.out.println(sb.toString());
            return null;
        }
    
        /**
         * 返回数组的容量
         *
         * @return
         */
        public int getCapacity() {
            return this.data.length;
        }
    
        /**
         * 传入索引,获取该位置元素
         *
         * @param index
         * @return
         */
        public E getValue(int index) {
            if (index >= size || index < 0) {
                throw new IllegalArgumentException("parameter error");
            }
            return this.data[index];
        }
    
        /**
         * 传入索引和值,替换原数据
         */
        public void replace(int index, E value) {
            if (index >= size || index < 0) {
                throw new IllegalArgumentException("index out of bounds");
            }
    
            data[index] = value;
        }
    
        /**
         * 是否包含此索引
         *
         * @param index
         * @return
         */
        public boolean containsIndex(int index) {
            return index < 0 || index >= size ? false : true;
        }
    
        /**
         * 是否包含此元素
         *
         * @param value
         * @return
         */
        public boolean containsValue(E value) {
    
            for (int i = 0; i < size; i++) {
                if (data[i].equals(value)) {
                    return true;
                }
            }
            return false;
        }
    
        /**
         * 返回第一个元素的索引
         *
         * @param value
         * @return
         */
        public int findIndex(E value) {
    
            for (int i = 0; i < size; i++) {
                if (data[i].equals(value)) {
                    return i;
                }
            }
            return -1;
        }
    
        /**
         * 查找所有此值的索引
         *
         * @param value
         * @return
         */
        public int[] findAll(E value) {
            int[] tempArray = new int[size];
            int tempSize = 0;
    
            for (int i = 0; i < size; i++) {
                if (data[i].equals(value)) {
                    tempArray[tempSize] = i;
                    tempSize++;
                }
            }
    
    
            int[] resultArr = new int[tempSize];
    
            for (int i = 0; i < tempSize; i++) {
                resultArr[i] = tempArray[i];
            }
    
            return resultArr;
        }
    
    
        /**
         * 删除指定索引
         */
        public boolean removeIndex(int index) {
            if (containsIndex(index)) {
                for (int i = index + 1; i < size; i++) {
                    data[i - 1] = data[i];
                }
                size--;
                data[size] = null;
            }
    
            if (size <= (data.length >> 2) && (data.length >> 1)!= 0){
                resetSize(data.length >> 1);
            }
    
            return true;
        }
    
        /**
         * 删除首元素
         *
         * @return 返回成功与否
         */
        public boolean removeFirst() {
            return removeIndex(0);
        }
    
        /**
         * 删除最后一个元素
         *
         * @return
         */
        public boolean removeLast() {
            return removeIndex(this.size - 1);
        }
    
        /**
         * 删除该值首次出现索引
         *
         * @param value
         * @return
         */
        public boolean removeElement(E value) {
            int index = this.findIndex(value);
            return removeIndex(index);
        }
    
        /**
         * 删除该值出现索引
         * @param value
         * @return
         */
        public boolean removeAll(E value){
            int[] all = this.findAll(value);
    
            for (int i = 0 ;i < all.length ;i++){
                //this.removeElement(value);
                this.removeIndex(all[i]-i);
            }
            return true ;
        }
    
        /**
         * 扩容并拷贝至新数组
         */
        public void resetSize(int capacity){
            E [] newArr = (E[]) new Object[capacity];
    
            for (int i = 0 ;i < size ; i++){
                newArr[i] = this.data[i];
            }
            data = newArr;
        }
    
    }
    
    展开全文
  • java重写toString()方法

    千次阅读 多人点赞 2020-05-09 19:36:01
    我不知道你们有没有这种情况发生,但是我经常就有,原因当然是因为不习惯重写toString方法和基础知识还不足导致的啦。还是要加油呀!所以记录一下学习的toString()方法。 1.1 在Object类中有一个重要的方法:...
  • 把char 数组中的内容打印出来: Object类具有一个toString()方法,你创建的每个类都会继承该方法。它返回对象的一个String表示,并且对于调试非常有帮助。然而对于默认的toString()方法往往不能满足需求,需要覆盖...
  • 我正在我们的课上制作一个项目,我计划输出我的数组而不是[33, 12, 98] to [033, 012, 098]我只是想知道是否可以在不重写Arrays.toString()方法的情况下这样做.谢谢您的帮助 :)解决方法:你不能覆盖Arrays.toString()...
  • 数组toString()方法,数组常用操作

    万次阅读 多人点赞 2017-09-08 13:45:18
    int[] arr ={1,2,3,4,5}; String arrString = Arrays.toString(arr); //输出[I@7150bd4d ...java里,所有的类,不管是java库里面的类,或者是你自己创建的类,全部是从object这个类继承的。object里有一个方
  • java里,所有的类,不管是java库里面的类,或者是你自己创建的类,全部是从object这个类继承的。object里有一个方法就是toString(),那么所有的类创建的时候,都有一个toString的方法。
  • 打印多维数组,目标为打印数组内容。 实际打印结果返回的字符串是:类名@散列码。 所以需在类中重写toString方法。 查看源码 重写后输出正确
  • 我在处理一段关于将一个byte数组类型的变量通过toString()方法进行字符串的转换的代码的时候: 代码如下: public void testReduce() { String byte_str="123"; byte[] test=byte_str.getBytes(); System.out....
  • Java 数组

    2021-03-04 04:31:35
    1.定义数组的方式类/基本类型 [] 数组名 = new类/基本类型[长度];例如:node[] a=new node[5];int [] b=new int[6];double []c=new double[6];缺点:长度固定,不够灵活定义的时候就初始化了,类数组的初始值是null...
  • java 数组扩容的方法

    2021-03-07 00:49:35
    java 拓展数组长度的方法前言数组是我们编程常用到的一种最简单的数据结构,操作简单,功能强大。但是也是一个缺点,就是一旦创建了数组,就不能改变它的大小。如果申请一个超大的内存空间,又容易造成空间浪费,那...
  • java 字符数组使用toString变为乱码(其实是地址) 我在网上搜了一下这个小白容易犯的问题并没有人解答过 因为String字符串可以通过toCharArray()得到字符数组,所以很多初学者就会想到对字符数组使用toString...
  • 数组java中一个重要的类型,小伙伴们知道如何将数组转为字符串吗?下面就让小编为你介绍一下吧。在数组中直接用toString()方法返回的并非常常并非我们想要的字符串,而是[类型@哈希值],其原因在于Object类中的...
  • 前面我们学习了冒泡和选择排序以及二分查找,还有数组如何转换成字符串,其实接下来学习的这个Arrays类都提供了解决这些问题的方法。Arrays类是一个数组工具类,就像String类是处理字符串的工具类一样,Arrarys就是...
  • JAVA中有很多方便的内置函数和方法,其方法可以自定义和改写。 今天对Sort方法做一下小结: 对数组进行排序 1.1 默认排序(升序) int[] temp = {3, 6, 9, 3, 2, 1, 8, 7}; Arrays.sort(temp); System.out....
  • JAVA数组去重实用方法

    千次阅读 2019-07-27 08:54:43
    package cn.kgc.mybatisdemo.util; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class Demo1 { public static void main(String[] args) { String [] num ...
  • 为了方便输出对象,Object类提供了toString()方法。...在重写不同类的toString()方法时调用该方法就可以避免多次重写toString()方法。实例运行效果如图 编写类StringUtils,在该类中定义了两个方法...
  • java数组的四种拷贝方式

    万次阅读 多人点赞 2018-11-18 18:28:44
    数组的拷贝方式有四种,分别是: for循环 &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;clone()&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;System.arraycopy()&...
  • java中打印数组的方法An array is a data structure used to store data of the same type. Arrays store their elements in contiguous memory locations. 数组是用于存储相同类型数据的数据结构。 数组将其元素...
  • java数组常见问题数组的定义数组的属性数组访问的问题1. 数组越界2. 指向空指针3. 数组作为参数传递数组转字符串1. Arrays.toString()2. 重写toString方法数组的拷贝1. 通过for循环2. 通过工具类 Arrays.copyOf()3. ...
  • 注意点: set去重时对于自定义的对象如果其对象属性有一个相同即为一个对象处理 list利用迭代器进行对象相同处理(按照所有相同属性进行判断但必须该定义的对象重写toString方法才可使用contains方法) ...
  • 还记得为用户定义的类重写toString()方法,这样您就可以根据自己的选择获得objet的表示,而不是默认的classtype@hashcode表示。 要打印值,请使用。 for(int i=0; i System.out.println(arr[i]); 不是内存地址。...
  • 一、Java中字符串与数组之间的转化 1、字符串->数组 (1)转换成字符数组java String 类中的toCharArray()方法将字符串转换为字符数组 String str = "123abc"; char[] arr = str.toCharArray(); // char数组 ...
  • //该字符数组中有7个字符 str = c.toString(); str1 = Arrays.toString(c); System.out.println( str.length()); //返回str的长度是11 System.out.println("str= " + str); //直接打印str输出的是地址值...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 73,197
精华内容 29,278
关键字:

java数组重写tostring

java 订阅