首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Java为什么不同返回类型不算方法重载?

本文已收录《Java常见面试题》:https://gitee.com/mydb/interview 方法重载是指在同一个类,定义了多个同名方法,但每个方法参数类型或者是参数个数不同就是方法重载...doSomething } public void method(Integer id, String name) { // doSomething } } 为什么不同返回类型不算方法重载...方法签名是由:方法名称 + 参数类型 + 参数个数组成一个唯一值,这个唯一值就是方法签名,而 JVM(Java 虚拟机)就是通过这个方法签名来决定调用哪个方法。...: 那为什么返回类型不能做为方法签名一部分?...总结 同一个类定义了多个同名方法,但每个方法参数类型或者是参数个数不同就是方法重载。方法重载典型使用场景是 String valueOf 方法,它有 9 种实现。

3.3K10

为什么Java没有为空字符串设置访问API | Java Debug 笔记

为什么Java没有为空字符串设置访问API?...=========================熟悉Java朋友都知道,当我们通过双引号创建字符串时候,Java 会将字符串存储常量池中以供我们下次使用但是为什么String类不为我们提供一个对空字符串引用因为这样做至少可以节省了编译时间...我个人认为这某种意义上来说这有点“代码味道”所以说,关于String空字符一说Java是否有更加复杂涉及考虑还说设计者没有考虑到这个问题回答1===String.EMPTY是12个字符,而"..."仅仅2个字符,它们在运行时都将引用内存完全相同实例。...一个""到底是真的就是空内容?还是开发者忘记写上内容了。所以建议自己全局类上建立一个空String。 其他地方引用。 我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

12210

为什么StringJava是不可变

String Java 是不可变。 不可变类只是一个无法修改其实例类。 创建实例时,将初始化实例所有信息,并且无法修改信息。 不可变类有许多优点。...本文总结了为什么 String 设计为不可变。 这篇文章从内存,同步和数据结构角度说明了不变性概念。 1. 字符串池 字符串池(String intern pool)是方法区域中特殊存储区域。...如果字符串是可变,则使用一个引用更改字符串将导致其他引用错误。 2. 缓存哈希码 字符串哈希码经常在 Java 中使用。 例如, HashMap 或 HashSet 。...String类,它具有如下代码: private int hash;//this is used to cache hash code. 3....当然,上面的示例仅用于演示目的,并且实际字符串类没有值字段。 4. 安全 String 被广泛用作许多 java参数,例如 网络连接,打开文件等。

1.3K20

nextline函数_JAVAScannernext()和nextLine()为什么不能一起使用?

Java 输入一直是一个坑,本来一直用 Scanner,但一直搞不懂换行符啥,就用 BufferReader ,但前不久大疆笔试需要持续输入,早忘了 Scanner 怎么写,而那个场景用 Scanner...回车符 “\r” 它被丢弃缓冲区,现在缓冲区,只有一个 \r ,于是 下一次 nextLine 扫描时候就又扫描到了 \r,返回它之前内容,也是啥都没有 “” ,然后再把 \r 去掉, 对于...,而我们控制台中输入数据也都是被先存入缓冲区中等待扫描器扫描读取。...这个扫描器扫描过程判断停止依据就是“结束符”,空格,回车,tab 都算做是结束符 而坑点在于 next 系列,也就是下面这些函数:next nextInt nextDouble nextFloat...这些函数与 nextLine 连用都会有坑 坑点就是 next 系列函数返回了数据后,会把回车符留在缓冲区,因此我们下一次使用 nextLine 时候会碰到读取空字符串情况 解决方案:输入都用

2.6K10

京东面试题:Java ++i 操作是线程安全么?为什么?如何使其线程安全

http://blog.csdn.net/FansUnion/article/details/79495080 面试题:为什么最后两行没有运行?...可以参考http://blog.csdn.net/taohuaxinmu123/article/details/24472073Java虚拟机栈(Java Virtual Machine Stacks...在这三步任何之间都可能会有CPU调度产生,造成i值被修改,造成脏读脏写。 接下来说volatile不能解决这个线程安全问题。因为volatile只能保证可见性,不能保证原子性。...为什么AtomicInteger使用CAS完成?...最初是没有CAS,只有陷入内核态锁,这种锁当然也需要硬件支持。后来硬件发展了,有了CAS锁,把compare 和 set 硬件层次上做成原子,才有了CAS锁。

39310

京东面试题:Java ++i 操作是线程安全么?为什么?如何使其线程安全

http://blog.csdn.net/FansUnion/article/details/79495080 面试题:为什么最后两行没有运行?...可以参考http://blog.csdn.net/taohuaxinmu123/article/details/24472073Java虚拟机栈(Java Virtual Machine Stacks...在这三步任何之间都可能会有CPU调度产生,造成i值被修改,造成脏读脏写。 接下来说volatile不能解决这个线程安全问题。因为volatile只能保证可见性,不能保证原子性。...为什么AtomicInteger使用CAS完成?...最初是没有CAS,只有陷入内核态锁,这种锁当然也需要硬件支持。后来硬件发展了,有了CAS锁,把compare 和 set 硬件层次上做成原子,才有了CAS锁。

39110

为什么Java成员变量不能被重写?成员变量Java能够被重写么?不会重写成员变量,而是隐藏成员变量访问隐藏域方法

这篇文章讨论了Java面向对象概念中一个基本概念--Field Hiding(成员变量隐藏) 成员变量Java能够被重写么?...Paste_Image.png 按照我们已有的多态概念,第二个应该是输出sub才对,但却输出了super。这是为什么?...不会重写成员变量,而是隐藏成员变量 Java文档对隐藏域定义: Within a class, a field that has the same name as a field in the superclass...意思就是: 一个类,子类成员变量如果和父类成员变量同名,那么即使他们类型不一样,只要名字一样。父类成员变量都会被隐藏。子类,父类成员变量不能被简单用引用来访问。.../simple-java/

3.5K40

Java三大特性 - 超详细篇

前言 大家好啊,我是汤圆,今天给大家带来是《Java三大特性 - 超详细篇》,希望对大家有帮助,谢谢 这一节内容可能有点多,大家可以选择性来看 简介 Java三大特性:封装、继承、多态 乍一听...)去做 抽象类有一个很重要特点:抽象类可以没有抽象方法,但是如果一个类有抽象方法,那么这个类肯定是抽象类 为什么会有抽象类 解耦,使代码结构更加清晰 因为抽象类不能被直接创建为对象,它只是作为一个通用接口来供别人实现和调用...重载(overloading)和覆写(overwriting) 重载和覆写是两个很容易混淆概念 重载:同一个类,一个方法多种表现形式(参数类型不同,参数个数不同) 覆写:继承设计,子类覆盖父类方法...,方法名会被直接替换为方法内容 比如:final getName()这个方法可以内联为name属性 再比如:getSum(){return a+b},会直接被内联为a+b 为什么会有内联这个东西?...多态(Polymorphism) 字面理解,就是多种形态,Java,多态指的是,一个类可以有多种表现形态 多态主要是 用来创建可扩展程序 像我们上面提到继承就是属于多态一种 还有一种就是接口(

45910

Java 三大特性(超详细篇)

大家好,又见面了,我是你们朋友全栈君。 简介 Java三大特性:封装、继承、多态 乍一听,好像很高大上,其实当你真正用时候,会发现高大上还在后面。。。...)去做 抽象类有一个很重要特点:抽象类可以没有抽象方法,但是如果一个类有抽象方法,那么这个类肯定是抽象类 为什么会有抽象类 解耦,使代码结构更加清晰 因为抽象类不能被直接创建为对象,它只是作为一个通用接口来供别人实现和调用...重载(overloading)和覆写(overwriting) 重载和覆写是两个很容易混淆概念 重载:同一个类,一个方法多种表现形式(参数类型不同,参数个数不同) 覆写:继承设计,子类覆盖父类方法...,且没有被其他类覆写时,方法名会被直接替换为方法内容 比如:final getName()这个方法可以内联为name属性 再比如:getSum(){return a+b},会直接被内联为a+b 为什么会有内联这个东西...多态(Polymorphism) 字面理解,就是多种形态,Java,多态指的是,一个类可以有多种表现形态 多态主要是 用来创建可扩展程序 像我们上面提到继承就是属于多态一种 还有一种就是接口

32510

性能分析之激情过程无奈结局

说cpu使用率不高,为什么负载那么高?截图为证。 ? 我也没见过说负载高,cpu使用率不高。...同样,跟分析java任意进程一样。打堆栈、转pid,找到它。 为什么这里,我要这样做,而不是问jmeter执行什么脚本、什么业务逻辑? 因为这种远程分析,信息传递经常会有缺失。...性能分析过程,经常出现一种情况就是“我觉得是没有问题”、“我觉得这个角度我已经分析过了”。可怕就是这种“我觉得”,因为判断标准因为技术背景和经验、以及经历不同,会出现完全不同判断结果。...所以大部分沟通过程,我都倾向于自己看数据方式,因为这样数据只会表现真实情况,不会给一个错误判断,而这个判断只能由自己来做。 ?...总体来说,从问题表象到原因之间,都是会有证据可循。而在分析过程中就是要把证据找出来。层次清晰,逻辑合理,不要绕来绕去把问题复杂化。

61641

equals 和 == 到底有什么区别?

Java equals 和 == 对于不同数据类型有不同表现,话不多少,看演示。...,== 不是判断两者是否相等么,那为什么结果为 false ?...因为这里 Integer 是一个对象,也就是引用数据类型,里面存放是对象堆内存引用值,所以这里 == 只是判断两者引用值是否相同,两者创建了两个对象,堆内存中分别是不同引用,由而引用值也不同...因为 Java 5 ,为 Integer 操作引入了一个新特性,用来节省内存和提高性能。整型对象在内部实现通过使用相同对象引用实现了缓存和重用。...true 很容易理解,毕竟两个对象引用不同,但是 equals 不是判断值是否相同么,我两个id 和 name 都是一样为什么这里还会返回 false

64130

javaVolatile关键字使用

javaVolatile关键字使用 本文中,我们会介绍java一个关键字volatile。volatile中文意思是易挥发,不稳定。那么java中使用是什么意思?...我们知道,java,每个线程都会有个自己内存空间,我们称之为working memory。这个空间会缓存一些变量信息,从而提升程序性能。...那么我们就可以使用Volatile关键字来强制将变量直接写到main memory,从而保证了不同线程读写到是同一个变量。 什么时候使用volatile 那么我们什么时候使用volatile?...java.lang.AssertionError: Expected :1000 Actual :992 ~~ 为什么?...a是一个非volatile变量,flag是一个volatile变量,但是由于happens-before特性,a 将会表现和volatile一样。

33640

Java集合Set - 入门篇

前言 大家好啊,我是汤圆,今天给大家带来是《Java集合Set - 入门篇》,希望对大家有帮助,谢谢 简介 前面介绍了集合List,映射Map,最后再简单介绍下集合Set,相关类如下图所示 [集合...] 正文 Set从外面看像List(都是存储单一数据集合),只不过存储数据不会有重复; 但是里面却是Map映射(因为它内存存储是基于Map结构实现),这也是为什么把Set放到Map后面来说原因。...[TreeSet报错 Comparable] 可是为什么要转换?我也没有转换啊 那是因为内部自动转换了 TreeSet啥时候会自动将元素类转为Comparable?...1 : -1; } } 此时运行就没问题了 那为什么TreeMap没有这个问题?...LinkedHashSet拥有HashSet大部分优点,且保证了插入顺序,使得查询时候,可以按照插入顺序依次读取(原理是链表) 这里要注意一点:Java程序语言设计,所有的链表都是双向链表

54841

一文回顾 Java 入门知识(下)

设计模式 [设计模式.png] Java 23 种设计模式开发应用很多,不仅仅是我们平时应用开发,还包括一些框架和系统源码中都有应用,具体内容不能生搬硬套,而是经验中去体会这个过程,思考应用设计模式时机和场景...等等),这个概念总体给人是一种抽象,但还大概知道这个词具有哪些 共性 ,而这里 共性 就是抽象出来具体能力,Java叫抽象方法,因为每个具体开发者所具有的同一个方法内部能力表现不同,这就是具体子类要实现...我们实际开发,根据业务场景,我们要自己去提取抽象类,进而实现分离能力,而所分离出来多个子类,具有不同表现形式,就是多种形态,故名 多态 。...关键字 instanceof 相信你能明白,我们抽离出来了抽象类(父类),那么子类表现各异,而父类如何判断一个子类是否是它子类?这就是关键字 instanceof 用处。...Java为什么会有接口(interface)? 接口使用规则和接口中方法定义 内部类应用场景?

31030

【面试题】2018年最全Java面试通关秘籍第四套!

一、Java基础 为什么JVM调优经常会将-Xms和-Xmx参数设置成一样; Java线程池核心属性以及处理流程; Java内存模型,方法区存什么; CMS垃圾回收过程; Full GC次数太多了,如何优化...在内存对象上表现为什么? wait/notify/notifyAll⽅法需不需要被包含在synchronized块?这是为什么? ExecutorService你一般是怎么⽤?...(数据库索引) 三、Linux基础 Linux下可以/proc目录下可以查看CPU核心数等;cat /proc/下边会有很多系统内核信息可供显示; 说一下栈内存是怎么分配; Linux各个目录有了解过吗...说一下栈帧内存是怎么分配; Linux下排查某个死循环线程; 动态链接和静态链接区别; 进程内存分布; 如何查找一个进程打开所有的文件; 说一下常使用协议及其对应端口; 为什么会有内核态,...文件是怎么磁盘上存储? 有了进程为何还要线程不同进程和线程他们之间有什么不同。(进程是资源管理最小单位,线程是程序执行最小单位。

1.6K10

文件IO操作最佳实践

FileChannel 为什么比普通 IO 要快?...,文件位置虚拟内存中有了对应地址,可以像操作内存一样操作这个文件,相当于已经把整个文件放入内存,但在真正使用到这些数据前却不会消耗物理内存,也不会有读写磁盘操作,只有真正使用这些数据时,也就是图像准备渲染在屏幕上时...紧接着我还要告诉你一些令你沮丧事,至少 JAVA 中使用 MappedByteBuffer 是一件非常麻烦并且痛苦事,主要表现为三点: MMAP 使用时必须实现指定好内存映射大小,并且一次 map...至于 MMAP 为什么一次写入少量数据场景下表现比 FileChannel 优异,我还没有查到理论根据,如果你有相关线索,欢迎留言。...话说回来,Java 怎么用 Direct IO ?有没有什么限制

1.4K71

文件IO操作最佳实践

FileChannel 为什么比普通 IO 要快?...,文件位置虚拟内存中有了对应地址,可以像操作内存一样操作这个文件,相当于已经把整个文件放入内存,但在真正使用到这些数据前却不会消耗物理内存,也不会有读写磁盘操作,只有真正使用这些数据时,也就是图像准备渲染在屏幕上时...紧接着我还要告诉你一些令你沮丧事,至少 JAVA 中使用 MappedByteBuffer 是一件非常麻烦并且痛苦事,主要表现为三点: MMAP 使用时必须实现指定好内存映射大小,并且一次 map...至于 MMAP 为什么一次写入少量数据场景下表现比 FileChannel 优异,我还没有查到理论根据,如果你有相关线索,欢迎留言。...话说回来,Java 怎么用 Direct IO ?有没有什么限制

79030

java高并发系列 - 第4天:JMM相关一些概念

java高并发系列第4篇文章 JMM(java内存模型),由于并发程序要比串行程序复杂很多,其中一个重要原因是并发程序数据访问一致性和安全性将会受到严重挑战。如何保证一个线程可以看到正确数据?...java,其表现在对于共享变量某些操作,是不可分,必须连续完成。...java实现原子操作方法大致有2种:锁机制、无锁CAS机制,后面的章节中会有介绍。 可见性 可见性是值一个线程对共享变量修改,对于另一个线程来说是否是可以看到。...有些同学会说修改同一个变量,那肯定是可以看到,难道线程眼盲了? 为什么会出现这种问题? 看一下java线程内存模型: ?...(不能越级) 不同线程之间也无法直接访问其他线程工作内存变量,线程间变量值传递需要通过主内存来进行。

43330
领券