• [技术干货] 访谈java之父为啥选择java的理由?
    微软的.NET和SUNone的争夺由来已久,并且有愈演愈烈之势,最近微软的Server2003活动刚落幕,在16日上午“Java之父”JamesGosling在北京出席第六届全国Java技术与应用大会,面对以COM+为核心Server2003凌厉攻势,让我们听听这位传奇人物是如何评价微软还有java的。  以下是James Gosling答记者和Java爱好者的提问:   “微软是一个很难合作的公司,在微软的字典里似乎没有合作二字!”                                JamesGosling   问:Sun近来与中国各移动厂商积极合作,发展无线增值服务,微软也刚刚开发了一组智能手机产品,Sun是如何应对的?   JamesGosling:微软是一个有意思的竞争伙伴,Sun的强大武器是Java技术本身,同时,Sun和合作伙伴达成紧密合作,极大的支持软件开发团队。9月26日,Sun与联通宣布结成联盟,这是联通看到了Java在手机市场的专有性和Java具有的开放性和标准性。Java欢迎竞争,因为只有这样才能最大限度的提高领域内的技术。 问:在近几年的发展过程中,很多编程语言都逐渐消失,而Java语言却越来越火热起来,请问您其中的秘诀在哪里?   JamesGosling:我认为,很多的编程语言在发展中并不是消失,而是转移到了其他领域中去,而Java的经久不衰,取决于Java的技术基础,如果你问编程师,为什么会选择Java,他会告诉你,Java提供了多种功能,提供了方便的平台,是个足以吸引人的工具。我认为,推动Java最主要的因素是网络,Java是以网络应用为基础的开发工具,这是它的强处。   问:在传统计算机领域中,Java并不是十分大的平台,如台式PC。而在其他领域,如移 动领域,Java发展迅速,Java的未来发展方向是什么?   JamesGosling:而在PC领域,我并不认为Java不够强大,在PC领域Java有很多应用,这是表面上看不到的,这主要是微软花了大力气避免用户看到,实际上Java应用很广泛,比如说人工智能游戏,在其他大的领域,Java更是应用广泛,例如在汽车,铁路机车上的即时控制系统,Java也广泛应用于军用方面。   问:在中国有很多人使用手机,使用移动方案,您认为在更新的设备上使用J2ME有什么看法?   JamesGosling:J2ME的规格在不断地进化,但是我们的规划过程主要是推动力是手机性能不断地增长。在两年前,当时手机比今天的性能要差得远。我拿的手机是一个诺基亚的手机,它有16兆的存储记忆,在几年之前我们会认为16兆只能在一个很强大的桌面机上实现,所以我们现在用手机可以做的工作现在变得越来越有趣,这个领域有非常光明、非常令人振奋的前景。   问:大家都敬称您为Java之父,您能不能跟大家分享一下你在Java事业中最深的感受是什么?   JamesGosling:当看到Java的客户通过Java完成了很多神奇的工作,像看到夏威夷火山上的观测台使用Java控制望远镜,看到荷兰健康医疗组织使用Java解决了保护隐私问题等等,那真是一种奇妙的感觉。  问:Sun一直称由Sun开发的web服务是最好的,能不能总结一下其特性,为什么这样认为。Sun在解决和微软的web组互操作上程度如何,Sun的web服务进展怎样?  JamesGosling:有太多的东西可以确定Java的优势,我认为其最大的优势在于,Java是集成了许多人努力而创建的强有力的工具,可以提供很多功能。Java满足网络服务标准,具有很强的安全性。Sun花了很大的力气在解决和微软的互操作性上,遵循国际网络业的标准与微软工具进行交流,开发了大量相关工具。微软是一个很难合作的公司,在微软的字典里似乎没有合作二字,Sun花了很大的力气去遵循微软标准,扩大互操作性。而Sun的web服务未来将向扩大web应用能力,扩大通用性和边缘应用上发展。  问:IBM与BEA在很多方面是Sun的合作伙伴,同时,在web服务上成绩也是名列前茅,Sun是如何看待与IBM和BEA等厂商的关系的,Sun认为自己的优势在哪里?  JamesGosling:Sun竞争依靠的是好的产品,Sun认为的是,市场越大就有更大的机会赚钱,Sun认为应该与像IBM,BEA等厂商合作共同开发市场,而不求垄断市场,打个比方来说,市场就像是一张饼,是一张小饼分走大的一块还是一张大饼分走小的一块。Sun的经营模式是致力于扩大市场,我认为这胜过微软的垄断市场策略。  问:你是否有过有关职业病的问题?现在好了吗?  JamesGosling:我有各种各样的职业病了,就是高度劳累的职业病。我的双手都有职业病的各种症状,但这种病实际上并不是很痛苦,只是你的神经会有一些麻木,可能不会有感觉。拿个刀子把手指砍下去可能你都不会知道,这种感觉非常可怕。如果你要坐在桌前,16个小时要是不停地在敲键盘,会有很大的损害,你一定要注意身体。16个小时工作绝不是好做法。
  • [技术干货] 如何分析java中的浮点数?
    浮点数分为单精度和双精度,Java中的单精度和双精度分别为float和double.你们知道float和double是怎么存储的吗?   float占4个字节,double占8个字节,为了方便起见,这里就只讨论float类型.   float其实和一个int型的大小是一样的,一共32位,第一位表示符号,2-9表示指数,后面23位表示小数部分.这里不多说,请参考:http://blog.csdn.net/treeroot/archive/2004/09/05/95071.aspx  这里只举一个例子,希望能抛砖引玉,就是研究一下浮点数0.1的存储形式,先运行这个程序.  public class Test{   public static void main(String[] args) {   int x = 0x3d800000;   int i = 1 << 22;   int j = 1 << 4;   float f = 0.1f;   int y = Float.floatToIntBits(f);   float rest = f - ( (float) 1) / j;  while (i > 0) {   j <<= 1;   float deta = ( (float) 1) / j;   if (rest >= deta) {   rest -= deta;   x |= i;   }   i >>= 1;   }   pr(x);   pr(y);   }  static void pr(int i) {   System.out.println(Integer.toBinaryString(i));   }  } 结果:   111101110011001100110011001101   111101110011001100110011001101  程序说明:   int x=0x3d80000;   因为浮点表示形式为1.f*2n-127我们要表示0.1,可以知道n-127=-4,到n=123   符号为正,可知前9是 001111011,暂时不考虑后面的23位小数,所以我们先假设x=0x3d800000;  int i = 1 << 22;   i初始为第右起第23位为1,就是x的第10位  int j = 1 << 4;   i初始为4,因为n-127为-4,这里是为了求它的倒数.  float f = 0.1f;   int y = Float.floatToIntBits(f);   y就是它的32位表示  float rest = f - ( (float) 1) / j;   这个rest表示除了1.f中的1剩下的,也就是0.f  while (i > 0) {   j <<= 1;   float deta = ( (float) 1) / j;   if (rest >= deta) {   rest -= deta;   x |= i;   }   i >>= 1;   }   这个循环来计算23位小数部分,如果rest不小于deta,表示这个位可以置为1.  其他的不多说了,输入结果是一样的,可以说0.1这个浮点数肯定是不精确的,但是0.5可以精确的表示,想想为什么吧
  • [互动交流] 明明是Hetu支持的字段类型,却报java.lang.UnsupportedOperationException错误
    有一个表,建表类型都是Hetu支持的类型,而且Hive查询都是正常的,Hetu查询却报java.lang.UnsupportedOperationException: io.prestosql.spi.type.VarcharType错误,如下:建表语句:Hive查询:Hetu查询:原因:出现此问题, 是因为Hetu内部默认是按照列的标号实现hdfs的文件切分成Page处理的,当hdfs的parquent或者orc的文件的列顺序和建表语句的列顺序不一致时,列会映射错位置,数据无法解释。解决方法:可以在将文件切分的方式改成列名映射,修改方法为:在hive.properties.customized.configs添加配置hive.parquet.use-column-names和hive.orc.use-column-names设置为true即可
  • [分享交流] 【JAVA编程创造营】强烈推荐
    推荐理由1. 基础不牢,地动山摇。这个创造营对JAVA基础抽丝剥茧讲的非常好,比人云亦云的教程绝对不一样~2.新鲜出炉,看老师午夜子时还在奋力录制教程,不强烈推荐对不起老师
  • [热门活动] 华为云博客“奔跑吧,JAVA!”有奖征文获奖名单正式出炉啦!让我们一同恭喜获奖者!
    “奔跑吧,JAVA!”有奖征文获奖名单正式出炉啦!让我们一同恭喜获奖者!大众评审团与专家评审团分别对最终入围的22篇优质文章进行了投票与打分,最终得出了一二三等奖,其他没有得奖的参与者也将获得大额码豆激励。昵称奖项奖品标题大众投票大众加权分评委加权分总分小傅哥一等奖JBL GO2音乐金砖给Java小白,整理一套能上手的简单编程算法题【含答案】!!!【奔跑吧!JAVA】601.694.46.09灰小猿一等奖JBL GO2音乐金砖【图文并茂】深度解析HashMap高频面试及底层实现结构!【奔跑吧!JAVA】411.164.85.96breakDraw一等奖JBL GO2音乐金砖java新手们必收藏的两本武林秘籍,java中的《降龙十八掌》和《九阴真经》分别是啥?【奔跑吧!JAVA】611.7245.72bigsai一等奖JBL GO2音乐金砖揭秘高效自学Java的方法和路线(从认识、方法、反馈3个角度出发)丨【奔跑吧!JAVA】591.6745.67breakDraw一等奖5000码豆java中的NIO和IO到底是什么区别?20个问题告诉你答案【奔跑吧!JAVA】361.024.65.62bigsai二等奖3000码豆「万字图文」史上最姨母级Java继承详解丨【奔跑吧!JAVA】200.5655.56breakDraw二等奖3000码豆“动态规划”这词太吓人,其实可以叫“状态缓存”【奔跑吧!JAVA】340.964.65.56ruochen二等奖华为便携充电宝20000mAH大话Java异常丨【奔跑吧!JAVA】250.714.65.31陈皮的JavaLib二等奖华为便携充电宝20000mAHSpring事件发布与监听机制丨【奔跑吧!JAVA】90.2555.25jackwangcumt二等奖华为便携充电宝20000mAHJava编程中容易忽略的细节总结丨【奔跑吧!JAVA】110.314.64.91ruochen三等奖2000码豆几行代码带你彻底搞懂Java内部类丨【奔跑吧!JAVA】250.714.24.91香菜聊游戏三等奖华为mini蓝牙音箱内存泄漏说的明明白白,解决办法清清楚楚【奔跑吧!JAVA】90.254.64.85陈皮的JavaLib三等奖2000码豆Spring Boot - 自定义 Banner 图案丨【奔跑吧!JAVA】70.204.64.80ruochen三等奖2000码豆JavaWeb 项目服务器部署详细教程(MySQL + JDK + Tomcat)丨【奔跑吧!JAVA】230.6544.65香菜聊游戏三等奖2000码豆从零复刻王者荣耀活动系统,策划都能看得懂的活动系统,源码奉送【奔跑吧!JAVA】60.174.44.57陈皮的JavaLib三等奖2000码豆【Spring系列】使用InitializingBean和DisposableBean来管理bean生命周期【奔跑吧!JAVA】50.144.44.54breakDraw三等奖2000码豆用1个例子加5个问题,一次性搞清java中的类加载问题【奔跑吧!JAVA】30.084.44.48陈皮的JavaLib三等奖2000码豆我是如何用 ThreadLocal 虐面试官的?丨【奔跑吧!JAVA】50.144.24.34jackwangcumt三等奖2000码豆JAVA编程不可不知的反射用法总结丨【奔跑吧!JAVA】40.114.24.31lwq1228三等奖华为mini蓝牙音箱[Java多线程四种常用创建方式【奔跑吧!JAVA】110.3144.31ruochen三等奖2000码豆Java 连接操作 MySQL 数据库(增删查改操作)【奔跑吧!JAVA】30.084.24.28香菜聊游戏三等奖2000码豆惊呆了,原来JavaIO如此简单【奔跑吧!JAVA】30.0844.08每位选手最终得分=获票数/总投票数 X 10 X 0.5+评委综合打分(10分满分)X 0.5昵称奖项奖品@Wu参与奖3000码豆aoho参与奖3000码豆franco52576参与奖3000码豆holo.yh参与奖3000码豆Jack20参与奖3000码豆liuzhen007参与奖3000码豆SHQ5785参与奖3000码豆sjwy参与奖3000码豆zekelove参与奖3000码豆爱学习的多宝参与奖3000码豆布小禅参与奖3000码豆代码哈士奇参与奖3000码豆多米诺的古牌参与奖3000码豆果冻906参与奖3000码豆考过IE励志当攻城狮参与奖3000码豆万猫学社参与奖3000码豆运气男孩参与奖3000码豆获奖信息收集请以上各位获奖者按如下操作:(参与奖无需回复信息)社区私信“技术火炬手”回复您的有效信息:姓名、手机号、电子邮箱、收货地址注:有效信息反馈期为1周(20号截止),超过时限未收到您的信息,则视为自动弃奖,过期不补请谅解!礼品预计在本月发出。有任何疑问请添加社区小助手微信(微信号:bbs_huaweicloud)让我们再次恭喜以上获奖者~今年五月,编程语言—JAVA迎来了自己的第26个生日。近年来,这位编程老牌大哥的地位却总是遭到许多人的质疑。随着互联网时代的发展,一些领域使用新的开发语言,在一定程度上抢占了Java的市场份额,但Java仍旧凭借自己的简单性、面向对象、分布式、健壮性、安全性、平**立与可移植性、多线程、动态性等特点,在互联网中得到了广泛的应用。华为云社区【Java】主题有奖征文开始啦!我们需要哪些主题的稿件?原则上,我们欢迎所有能帮助所有学习Java的人成长的文章!如基于自己的实际使用经验,分享对Java的技术分析、使用感受及在项目实战中的经验或踩坑指南等:你可以从以下几类主题和参考文章中,找到自己感兴趣的投稿方向:1、关于Java的基础知识,比如反射、泛型、线程、数组等在内的一些疑难点的学**结感悟。JAVA编程中常用到的线程和注意点总结https://bbs.huaweicloud.com/blogs/235226java知识点问题精选之反射https://bbs.huaweicloud.com/blogs/2521142、Java开发工具包JDK相关,比如近年来崛起的OpenJDK。Java JDK 10:下一代 Java 有哪些新特性?https://bbs.huaweicloud.com/blogs/1031583、JVM(Java虚拟机)相关,包括溢出、类加载机制、垃圾回收等。深入理解Java虚拟机(四): 虚拟机性能监控https://bbs.huaweicloud.com/blogs/1281464、Java开发框架相关:Spring 、Spring MVC、Spring security、Spring Boot、Mybatis等等。基于CSE的微服务架构实践-Spring Boot技术栈选型https://bbs.huaweicloud.com/blogs/1159615、JAVA需要掌握的基础工具和基本技能,如:GIT、单元测试Java单元测试之JUnit 5快速上手https://bbs.huaweicloud.com/blogs/1191786、JAVA后端开发:Servlet、Java操作数据库、Java的分布式开发Java数据库访问方案探究https://bbs.huaweicloud.com/blogs/1982817、结合您的JAVA开发生涯,说说在书籍、学习方法、开发应用及面试中独家小秘籍;或者讲讲您的个人见解感悟、谈谈对于JAVA的“诗和远方”。【原创】Java学习路线以及方法推荐https://bbs.huaweicloud.com/blogs/127049你将获得什么?我们会把收到的优质内容汇编成册,并注明原作者,积累行业口碑,开放给圈内开发者下载查阅,提供实践参考。对于贡献优质内容的作者,我们还将送出JBL音箱,华为硬核充电宝等各项大礼!同时,在华为云站内外10+个技术社区醒目位置进行推荐,给与百万级流量资源。希望最终的这份《JAVA实战手册》精选集,有你的署名。优质作者更可获得长期约稿和更多内容合作机会。评奖规则说明奖品评选依据 :文章投票数50%+专家评审打分50%投票流程 :6月30日截稿后评审会选出15-25篇最优秀的文章到论坛进行投票。投票链接 :7月5日开启投票,更新投票链接。专家评分依据 :文章篇幅、技术含金量、排版美观度、阅读量、点赞、收藏等指标综合评分其他说明 :1、一二三等奖不能叠加。2、以上所有奖项可以与云社区“云驻计划”激励叠加。 点击了解云驻计划在哪里投稿?2、文章需要发表在社区博客; 是时候展现真正的技术了, 点击前往发布标题以 【奔跑吧!JAVA】结尾,例如:JAVA编程中常用到的线程和注意点总结丨【奔跑吧!JAVA】。文章末尾需加上活动名称及链接地址:【奔跑吧!JAVA】有奖征文火热进行中:https://bbs.huaweicloud.com/blogs/265241有哪些需要注意的1、文章内容需体现技术看点,图文并茂,建议字数在500字以上;2、文章要求为投稿人原创,凡转载或抄袭一经发现将取消参赛资格;3、文章须在华为云社区为首发,如华为云平台已有文章内容则视为稿件无效;4、稿件投稿后,华为云拥有该稿件的使用权、修改权等。快来华为云社区博客,一起和JAVA奔跑吧! 点击立即发布如果有任何问题,可添加华为云社区小助手微信号:bbs_huaweicloud,进行沟通咨询。添加微信时请备注:奔跑吧Java+报名活动时使用的华为云昵称!扫码添加小助手:
  • 每日10道面试题打卡——Java基础知识篇
    1、请你说一下什么是面向对象?Java是面向对象的编程语言,不同于C语言是面向过程的。对于面向对象和面向过程的区别,举一个简单的例子说明一下(我们以洗衣机洗衣服为例):面向过程:面向过程的编程方式,程序会将要完成的某一个任务拆解成一系列的小步骤 (函数),如:① 打开洗衣机:method01()② 放入要洗的衣服:method02()③ 放入洗衣服:method03()④ 清洗:method04()⑤ 烘干:method05()面向对象:面向对象的编程方式,程序会将要完成的洗衣机洗衣服的任务拆分成如下两个对象:人(Person):Person在洗衣机洗衣服这个程序任务中有三个作用,分别是打开洗衣机、放入要洗的衣服、放入洗衣粉。洗衣机(Machine):Machine在洗衣机洗衣服这个程序任务中有两个作用,分别是清洗、烘干。从上面这个例子能看出,面向过程的编程方式比较直接且高效,而面向对象的编程方式更易复用、扩展和维护!2、请你简述一下面向对象的三个基本特征?继承:承是Java中面向对象最显著的一个特征,继承是从已有的类中派生出新的类,新的类可以吸收已有的属性、行为,并扩展新的能力。Java中不支持多继承,但是接口可以支持多实现。封装:将同一类事物的特征和功能包装在一起,只对外暴露需要调用的接口。封装也称为信息的隐藏,在Java中接口是体现封装最常用的方法,在接口中我们没有任何功能的实现(具体实现都交给实现类),只是定义了一系列抽象的方法声明用于外部调用。多态:封装和继承都是为多态来服务的,多态是指同一个行为具有多个不同的表现形式。在Java中方法的重载和重写是实现多态的2种方式。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载。方法重载体现了编译时的多态性。重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,重载对返回类型没有特殊的要求。方法重写体现了运行时的多态性。多态的三要素:继承 、重写、父类指向子类引用!3、为什么说 Java 是一种半解释半编译的程序设计语言呢?什么是编译形语言,什么又是解释形语言?编译型语言:把做好的源程序全部编译成二进制代码的可运行程序。然后,就可以直接运行这个程序。执行速度快,效率高,依靠编译器,跨平台性稍差。解释型语言:把已经做好的源程序,翻译一句,执行一句,直到结束。执行速度慢,效率低,依靠编译器,但是跨平台性稍好。那么为什么说Java 是编译型语言呢?第一个观点认为 Java 是编译型语言,因为Java程序想要运行,那么第一步就是要使用Javac进行编译(将Java源文件编译成.class二进制文件)。没有经过编译的.java文件,是没办法运行的!那么为什么又说Java 是解释型语言呢?那么第二个观点则是认为Java是解释型语言,Java经过编译,Javac 将.java源文件编译成.class二进制文件之后,仍然需要借助 JVM 的解释执行。综合上面两个观点来看,Java似乎既有编译型语言的特点,又有解释型语言的特点,也没有看到哪本权威的书籍上认定Java就是哪一种类型的语言。4、请你说一下Java中的8大基本类型是那些?如图所示:8种基本数据类型和取值范围:基本类型    大小(位/bit)    字节数(byte)    最小值    最大值    默认值    包装器类型boolean    -    -    false    true    false    Booleanchar    16 bits    2 bytes    Unicode 0    Unicode 2^16-1    空    Characterbyte    8 bits    1 byte    -2^7    2^7-1    0    Byteshort    16 bits    2 bytes    -2~15    2^15-1    0    Shortint    32 bits    4 bytes    -2^31    2^31-1    0    Integerlong    64 bits    8 bytes    -2^63    2^63-1    0    Longfloat    32 bits    4 bytes            0.0    Floaddouble    64 bits    8 bytes            0.0    Double注意:对于boolean值,在Java规范中并没有给出其储存大小,在《Java虚拟机规范》中给出了4个字节,和boolean数组1个字节的定义,具体还要看虚拟机实现是否按照规范来,所以1个字节、4个字节都是有可能的。除了void之外,其他8种基本数据类型被称为八大基本数据类型。图中从左向右的转换都是隐式转换,无需再代码中进行强制转换。从右向左均要进行强制类型转换,才能通过编译。强制转换会丢失精度。5、请你讲讲抽象类和接口有什么区别?(一) 继承方面:抽象类只能单继承;而接口可以多实现;(二) 成员属性方面:抽象类中可以有普通属性,也可以有常量;接口中的成员变量全部默认是常量,使用public static final修饰,这个可以省略不写;(三) 代码块方面:抽象类可以含初始化块;接口不能含初始化块;(四) 构造函数方面:抽象类可以有构函数,但是这里的构造函数不是用来创建对象的,而且用来被实现类调用进行初始化操作的;接口不能有构造函数;(五) 方法方面:接口在JDK1.8之后可以定义抽象方法(无方法体)、default 修饰的默认方法(有方法体)、static修饰的静态方法(有方法体),JDK1.8以前是只能有抽象方法。public interface Test {     static void test() {     }         default void test2(){     }         void test3();// 默认是abstract修饰 }抽象类中除了静态方法和抽象方法外还可以有普通方法。二者相同之处接口与抽象类都不能被实例化,需要被其他进行实现或继承。接口与抽象类里面都能包含抽象方法,实现接口或继承抽象类的子类都必须实现这些抽象方法。6、请判断当一个对象被当作参数传递给一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?是值传递。java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。java中只有值传递,基本类型传递的是值的副本,引用类型传递的是引用的副本7、请你说一下JVM/JRE/JDK的区别?直接看一张图就可以理解他们的区别了:JVM = Java虚拟机JRE = JVM + 基础类库JDK = JVM + 基础类库 + 编译工具8、请你说一下方法重载和方法重写的区别?重载:方法重载发生在同一个类中,重载的方法之间方法名必须相同,参数列表不同(参数的类型、参数的个数),方法的返回值和访问修饰符可以不同,发生在编译时期(方法重载实现了编译时多态)。重写:方法重写发生在子父类中,子类重写父类的方法,方法名称必须相同,参数列表也必须相同,方法的返回值小于等于父类方法的返回值,访问修饰符方位大于等于父类方法(如果父类方法修饰符为private,则子类就无法重写了)。9、请你说一下List接口和Set接口的区别?List:有序、可重复集合。按照对象插入的顺寻保存数据,允许多个Null元素对象,可以使用iterator迭代器遍历,也可以使用get(int index)方法获取指定下标元素。Set:无序、不可重复集合只允许有一个Null元素对象,取元素时,只能使用iterator迭代器逐一遍历。10、为什么重写了equals()方法还需要重写hashCode()方法?equals()只是判断对象属性是否相同,hashCode()要判断二者地址是否相同。java中如果要判断两个对象是否相等,需要同时满足地址 + 属性都相同!如果两个对象相同(即:用 equals() 比较返回true),那么它们的 hashCode 值一定要相同;如果两个对象的 hashCode 相同,它们并不一定相同;举例子:只重写 equals() 方法,不重写 hashcode() 方法:public class Student {    private String name;    private int age;     public Student(String name, int age) {        super();        this.name = name;        this.age = age;    }    @Override    public boolean equals(Object obj) {        if (this == obj)            return true;        if (obj == null)            return false;        if (getClass() != obj.getClass())            return false;        Student other = (Student) obj;        if (age != other.age)            return false;        if (name == null) {            if (other.name != null)                return false;        } else if (!name.equals(other.name))            return false;        return true;    }    // 省略 get,set方法...}执行下面的程序看看效果:public class hashTest {    @Test    public void test() {        Student stu1 = new Student("Jimmy",24);        Student stu2 = new Student("Jimmy",24);                System.out.println("两位同学是同一个人吗?"+stu1.equals(stu2));        System.out.println("stu1.hashCode() = "+stu1.hashCode());        System.out.println("stu1.hashCode() = "+stu2.hashCode());    }}如果重写了 equals() 而未重写 hashcode() 方法,可能就会出现两个没有关系的对象 equals 相同(因为equals都是根据对象的特征进行重写的),但 hashcode 不相同的情况。因为此时 Student 类的 hashcode() 方法就是 Object 默认的 hashcode()方 法,由于默认的 hashcode()方法是根据对象的内存地址经哈希算法得来的,所以 stu1 != stu2,故两者的 hashcode 值不一定相等。根据 hashcode 的规则,两个对象相等其 hash 值一定要相等,矛盾就这样产生了。上面我们已经解释了为什么要使用 hashcode 算法,所以即使字面量相等,但是产生两个不同的 hashCode 值显然不是我们想要的结果。如果我们在重写 equals() 时,也重写了 hashCode() 方法:public class Student {    private String name;    private int age;        public Student(String name, int age) {        super();        this.name = name;        this.age = age;    }    @Override    public int hashCode() {        final int prime = 31;        int result = 1;        result = prime * result + age;        result = prime * result + ((name == null) ? 0 : name.hashCode());        return result;    }    @Override    public boolean equals(Object obj) {        if (this == obj)            return true;        if (obj == null)            return false;        if (getClass() != obj.getClass())            return false;        Student other = (Student) obj;        if (age != other.age)            return false;        if (name == null) {            if (other.name != null)                return false;        } else if (!name.equals(other.name))            return false;        return true;    }    // 省略 get,set方法...}再来看执行结果:两位同学是同一个人吗?truestu1.hashCode() = 71578563stu1.hashCode() = 71578563从 Student 类重写后的 hashcode() 方法中可以看出,重写后返回的新的 hash 值与 Student 的两个属性是有关,这样就确保了对象和对象地址之间的关联性。
  • [问题求助] 【abc产品】【编码转换功能】ABC的script脚本如何将字符串转换成GBK编码? 租户:ncec1234
    【功能模块】script脚本如何将字符串转换成GBK编码?【操作步骤&问题现象】1、 java输入字符串 URLEncoder.encode("您的图纸已通过审核6666主场通知66", "GBK")      java的执行结果:%C4%FA%B5%C4%CD%BC%D6%BD%D2%D1%CD%A8%B9%FD%C9%F3%BA%CB6666%D6%F7%B3%A1%CD%A8%D6%AA662、abc的script输入字符串 let str = "您的图纸已通过审核6666主场通知66";let abcResult = iconv.encode(str, "GBK");abc输出结果:[ 196, 250, 181, 196, 205, 188, 214, 189, 210, 209, 205, 168, 185, 253, 201, 243, 186, 203, 54, 54, 54, 54, 214, 247, 179, 161, 205, 168, 214, 170, 54, 54 ] iconv.encode()如何输出java这种编码?在线编码工具的输出也和java输出一致3.script脚本其他方法测试结果:let abcResult2 = signer.urlEncode(str);结果:%E6%82%A8%E7%9A%84%E5%9B%BE%E7%BA%B8%E5%B7%B2%E9%80%9A%E8%BF%87%E5%AE%A1%E6%A0%B86666%E4%B8%BB%E5%9C%BA%E9%80%9A%E7%9F%A566let abcResult3 = escape(str);结果:%u60A8%u7684%u56FE%u7EB8%u5DF2%u901A%u8FC7%u5BA1%u68386666%u4E3B%u573A%u901A%u77E566let abcResult4 = encodeURI(str);结果:%E6%82%A8%E7%9A%84%E5%9B%BE%E7%BA%B8%E5%B7%B2%E9%80%9A%E8%BF%87%E5%AE%A1%E6%A0%B86666%E4%B8%BB%E5%9C%BA%E9%80%9A%E7%9F%A566let abcResult5 = encodeURIComponent(str);结果:%E6%82%A8%E7%9A%84%E5%9B%BE%E7%BA%B8%E5%B7%B2%E9%80%9A%E8%BF%87%E5%AE%A1%E6%A0%B86666%E4%B8%BB%E5%9C%BA%E9%80%9A%E7%9F%A566【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [技术干货] Java8中的流处理不能使用break,continue等
    流处理中不能使用这些.用了idea会提示转成普通的循环处理
  • 昨天看了下java生态圈的直播,内容通俗易懂,给大家推荐下,想学java的看这里
    目前直播回放正在准备中,后期可以看看,据说鸿蒙系统可以运行java,期待6月鸿蒙推广。想学习java的可以点下方链接报名。【Java编程创造营】零基础入门,夯实Java基础!免费学习还有奖品拿!专属链接分享报名链接:https://developer.huaweicloud.com/signup/8b6b490ea5d74497ae36b5219409746a?invitation=859d6bdacc33437f981b3093f12e13df
  • [认证交流] 微认证之路 华为企业级JAVA编程规范
    ### 名称及链接 [华为企业级JAVA编程规范](https://edu.huaweicloud.com/certifications/9eeea7c524514eb58ebc169186813cf4)   ### 课程章节 1. "JAVA基础语句"编程规范 2. "类的使用"编程规范 3. "异常处理"编程规范   ### 证书 ![wrz-rjkf-zj-javaguifan.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202105/17/172510foafkmku4w5p5yo3.png)   ### 笔记 1. switch 1. 建议要有default分支,除非switch的条件变量是枚举类型 2. 当switch后面表达式的值和case语句后的值相同时,switch结构从该位置开始向下执行,直到遇到break语句或者switch语句块结束 2. if 1. 建议 if-else if 类型的条件判断。最后应包含一个else分支 3. 浮点数 1. 由三部分组成:符号位S、指数部分E(阶码)、尾数部分M 2. Float(32位) 1. S:1位 2. E:8位 3. M:23位 3. double(64位) 1. S:1位 2. E:11位 3. M:52位 4. IEEE二进制浮点数算数标准(IEEE 754) 5. 精确计算:BigDecimal 6. 类型转换 1. 自动类型/隐式类型转换 1. 明确地进行类型转换,不要依赖隐式类型转换 2. 强制类型转换 1. 从存储范围大的类型到存储范围小的类型。该类类型转换很可能存在精度的损失。 7. 使用类名调用静态方法,而不要使用实例来调用 8. 重用名字 1. 覆写(override) 2. 重载(overload) 3. 隐藏(hide) 4. 遮蔽(shadow) 5. 遮掩(obscure) 9. 当一个对象被存储在hash集合中后,不要修改与计算hashcode有关的字段 10. 在强制转换之前,使用instanceof进行判断 11. toArray、System.arraycopy 12. ReentrantLock(重入锁) 13. 防止通过异常泄露敏感信息 1. 敏感信息泄露来源 1. 文本消息 1. 例如 FileNotFoundException 异常会透露文件系统的结构信息 2. 异常类型 1. 通过异常本身的类型,可以得知所请求的文件不存在 2. 解决方法 1. 对敏感的异常消息和敏感的异常类型进行过滤 14. 在finally块中不要使用return、break或continue使finally块非正常结束   ### 备注 1. 感谢老师的教学与课件 2. 欢迎各位同学一起来交流学习心得^_^ 3. 在线课程、沙箱实验、博客和直播,其中包含了许多优质的内容,推荐了解与学习。
  • [全栈开发者] (活动已结束)【Java编程创造营】第一阶段·技术文章征集帖
    为了巩固大家的学习成果,紧跟学习进度请将需要完成的相关技术文章内容按要求回复到本帖下方按要求格式回复即可获得积分累计阶段奖品,还能有机会获得附加幸运奖哦~征集时间2021.05.17-2021.06.30 23:59征集要求1.本学习阶段任意时间内,在【华为云】-【博客】发表与Java相关的任意博客内容,可以是开发技术技巧,可以是开发心得体会,不可以发布课程笔记作为博文,将文章链接回复至本帖内2.文章需为原创,在发布博客时,需要勾选文章创作类型:原创文章一项。用户承诺,发表的文章不存在任何知识产权问题并自行承担全部责任3.文章字数≥600字,图文并茂,不得抄袭网站课程,需写自己的理解和技术分享4.回复格式:华为云ID+博客文章链接5.如果曾在外部博客发表过的文章,可将文章迁移到华为云博客即可6.技术文章由华为技术专家评审,评审通过会对应的积分,不过专家会给出对应的评语且积分为0奖励方式每阶段每篇有效博客文章可获得5积分,每阶段获取上限10分,每阶段评选1篇最佳博文,奖励定制机械键盘~ 》》》限时活动《《《【有奖征文】奔跑吧,JAVA!-- 26周年特别策划今年五月,编程语言—JAVA迎来了自己的第26个生日。华为云社区特举办 Java主题征文活动,来庆祝这个属于技术的节日参与征文活动将会有机会获得精美礼品,优秀的文章还将被汇编成册,提供实践参考。报名【Java编程创造营】并参与此有奖征文活动将会获得额外积分加分发表文章+5分/篇(上限20分),TOP20文章 +10分/篇(上限20分)参与本次征文活动后,将参与活动的文章链接私信给小助手视为参与成功,活动时间与征文时间同步。征文活动参与详情请见:https://bbs.huaweicloud.com/blogs/265241如果文章同时参加了征文比赛在回复中备注(已参赛)全系列活动奖励本次活动不仅免费跟大牛学习技术,更有积分大礼等着大家~每次有效提交的学习任务都会得到对应积分,赢取智能硬件,还有华为无线耳机、机械键盘等你拿!点击了解Java编程创造营专属福利活动注意事项1. 学习任务提交后,小助手会在本阶段学习周期内,按序完成审核,并增加活动积分;2. 本次活动通过完成客观题打卡任务,可获得的积分上限为5分/每篇;3. 请务必按照上述要求提交内容,以免影响积分增加;4. 若积分值相同则以完成学习任务的时间先后排序,其中任务完成时间的判定优先级为:相关微认证>阶段沙箱实验>每周学习笔记>问答官排位赛>每章随堂测验打卡5. 其他积分获取方式请查看活动社群公告。想了解更多关于课程内容请移步主帖:https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=125761
  • [全栈开发者] (活动已结束)【Java编程创造营】第一阶段·每周学习笔记分享打卡贴
    为了巩固大家的学习成果,紧跟学习进度请按需要完成的每周读书笔记内容按要求回复到本帖下方按要求格式回复即可获得积分累计阶段奖品,还能有机会获得附加幸运奖哦~打卡时间2021.05.17-2021.06.30 23:59打卡要求在本帖中,回复每周读书笔记和心得 ↓回复格式:华为云ID+第几周笔记+笔记内容,并分享些读书心得(字数≥200字)回复示例如下:奖励方式每周每次有效打卡可获得2积分阶段学习将以积分排行榜的形式,对符合条件的小伙伴进行奖励!点击了解Java编程创造营专属福利活动注意事项 由于本帖回复内容为随堂测试结果,已设置回帖仅版主可见1. 学习任务提交后,小助手会在本阶段学习周期内,按序完成审核,并增加活动积分;2. 本次活动通过完成提交学习笔记任务,可获得的积分上限为2分/每周;3. 请务必按照上述要求提交内容,以免影响积分增加;4. 若积分值相同则以完成学习任务的时间先后排序,其中任务完成时间的判定优先级为:相关微认证>阶段沙箱实验>每周学习笔记>问答官排位赛>每章随堂测验打卡5. 其他积分获取方式请查看活动社群公告。想了解更多关于课程内容请移步主帖:https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=125761
  • [全栈开发者] (活动已结束)【Java编程创造营】第一阶段·问答官排位赛活动帖
    【Java编程创造营】第一阶段正在进行中为了巩固大家的学习成果,紧跟学习进度为大家提供学习交流的平台,推出问答官排位赛活动按要求格式回复即可获得积分累计阶段奖品,还能有机会获得附加幸运奖哦打卡时间2021.05.17-2021.06.30 23:59  参与方式:用户在本帖里发布自己在Java学习中产生的疑惑或实践问题,其他用户可通过在楼层下评论参与回答。  参与规则:1. 同一ID不可自问自答;2. 同一ID可回复其他同一ID问题数量需≤3次,如,A最多可回答B的三个问题,但A可回答B、C、D、E、F等多人次问题。3. 每个人最多可发布10个有效问题,不可重复,不可灌水。4. 每个ID回答次数不设上限,但是否被采纳要依据专家评审后的结果。  活动奖励:◎每个有效提问可获得5积分。上限为2个问题,最高10分。◎每个有效回答可获得2积分,上限为2个回答,最高4分。不得灌水,不得与他人显示,问题具有意义,占楼无效。有效提问示例:无效提问示例:◎最终会全部每阶段参与互动的用户中,抽取3位幸运用户,送出旅行本套装*1活动奖励点击了解Java编程创造营专属福利活动注意事项1. 学习任务提交后,小助手会在本阶段学习周期内,按序完成审核,并增加活动积分;2. 本次活动通过完成提交问答官问题,可获得的积分上限为5积分/每有效问题(最高10分)2积分/每有答复(最高4分);3. 请务必按照上述要求提交内容,以免影响积分增加;4. 若积分值相同则以完成学习任务的时间先后排序,其中任务完成时间的判定优先级为:相关微认证>阶段沙箱实验>问答官排位赛>每章随堂测验打卡5. 其他积分获取方式请查看活动社群公告。想了解更多关于课程内容请移步主帖:https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=125761&page=1&extra=#pid1161471
  • [全栈开发者] (活动已结束)【Java编程创造营】第一阶段·每章随堂测验打卡帖
    【Java编程创造营】第一阶段正在进行中为了巩固大家的学习成果,紧跟学习进度请将需要完成的每章随堂测验内容按要求回复到本帖下方按要求格式回复即可获得积分累计阶段奖品,还能有机会获得附加幸运奖哦~打卡时间2021.05.17-2021.06.30 23:59打卡要求在本帖中,回复对应章节的随堂测验并提交截图 ↓回复格式:自己的华为云ID+课堂章节序号+课程完成截图(露出右上角华为云ID,随堂测验为绿色对勾完成状态)回复示例:华为云帐号:grandmaster+第一章 测试题截图奖励方式每章节每次有效打卡可获得2积分阶段学习将以积分排行榜的形式,对符合条件的小伙伴进行奖励!附加福利:每周在本周内提交随堂测试的用户中,抽取1名幸运奖励华为云定制鼠标*1点击了解Java编程创造营专属福利活动注意事项 由于本帖回复内容为随堂测试结果,已设置回帖仅版主可见1. 学习任务提交后,小助手会在本阶段学习周期内,按序完成审核,并增加活动积分;2. 本次活动通过完成每章习题打卡任务,可获得的积分上限为2分/每章节;3. 请务必按照上述要求提交内容,以免影响积分增加;4. 若积分值相同则以完成学习任务的时间先后排序,其中任务完成时间的判定优先级为:相关微认证>阶段沙箱实验>每周学习笔记>问答官排位赛>每章随堂测验打卡5. 其他积分获取方式请查看活动社群公告。想了解更多关于课程内容请移步主帖:https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=125761
  • [全栈开发者] Java课程
    【Java编程创造营】已上线报名现已开启>>>>>>>点击此处了解详情当然我们一定不会只有学习课程这么简单我们准备了“带着好友一起学习,一起进步,一起“赢好礼”的超大惊喜01. 活动详情 -邀请活动时间:即日起至全阶段课程更新结束止-邀请行为:本人成功报名后,点击分享有礼,选择一种方式邀请好友成功报名即可。具体操作流程如下:步骤一:邀请人成功报名Java编程创造营后(点击去报名),点击图示中的“分享有礼”按钮步骤二:通过生成的专属链接/邀请二维码,即可邀请好友报名活动三、有效邀请的定义(邀请的好友):所有被邀请人员需满足以下条件才可算成功邀请,纳入奖励数量:1.拥有华为云账号,并完成实名认证2.邀请人与被邀请人在参与过程中有学习任务打卡动作3.邀请人需在课程全阶段学习积分榜前200名内4.分享链接需回复到本帖评论区以上条件缺一不可不要忘记的PS:参与邀请活动需自己先实名 活动结束后将统计最终排名及获奖结果,如核查发现存在邀请账号为机器注册账号或无效账号将取消此部分邀请数据。如出现邀请人数并列的情况,按最先达成人数的时间优先排名。02.奖励等级及奖品◎分享邀请人数第1名(通过邀请链接报名≥300人)( 人数相同时,以最先到达的为准)华为 FreeLace Pro 无线耳机◎分享邀请人数第2-3名(通过邀请链接报名≥100人)( 人数相同时,以最先到达的为准)JBL音乐金砖◎分享邀请人数第4-10名(通过邀请链接报名≥60人)( 人数相同时,以最先到达的为准)定制双肩包◎分享邀请人数第11-30名(通过邀请链接报名≥30人)( 人数相同时,以最先到达的为准)无线鼠标◎所有邀请人和被邀请人报名参与活动,即可获得 100 码豆数量和名额都很有限,先到先得!谁快谁先享豪礼哦~抓紧动起来!03. 活动说明   1) 参与“邀友一起学”活动的用户需进行课程报名与学习,参与学习任务打卡,并在课程学习积分榜前200名内;   2) 本次邀请活动为Java编程创造营全阶段期间活动,全阶段结束后会在20个工作日内结算并发布,发放时间根据实际情况动态调整,如有延期敬请见谅;   3)奖励标准优先判断奖励限制是否达成,同一奖励标准内再计算排名,并按照实际达到的邀请人数发放对应奖励。   4) 活动结束后将统计最终排名及获奖结果,如核查发现存在邀请账号为机器注册账号或无效账号将取消此部分邀请数据。如出现邀请人数并列的情况,按最先达成人数的时间优先排名。04. 活动注意事项·   活动从即日起至全阶段课程更新结束止,此外时间内邀请人数不算有效邀请·   专属链接/二维码禁止在本期课程学习群内露出,如发现群内露出将取消活动邀请资格·   参与活动需获取专属链接,专属链接需大家按照上述活动步骤自行获取,然后在本帖下方回复您的链接,否则视为放弃获奖资格!·   活动结束后10个工作日内公布详细结果,公示期5个工作日,公示期结束开始兑奖·   请勿使用论坛私聊或类似功能骚扰其它华为云用户,违者直接取消活动资格·   如遇奖品库存不足会进行同价位奖品调换,介意者谨慎参与活动·   如发现使用他人身份恶意重复报名活动,或采取机器批量注册/虚拟手机号注册/购买账号等恶意注册行为进行违规行为,华为云社区有权取消相应人员的活动参与权利,并收回相关奖励·   本次活动所有回帖内容需满足华为云论坛发帖规范:https://bbs.huaweicloud.com/forum/thread-23077-1-1.html·   本活动规则由华为云在法律规定范围内进行解释。华为云保留不时更新、修改或删除本活动规则的权利。
总条数:2301 到第 页
上滑加载中