iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java常见的误区与细节有哪些
  • 894
分享到

Java常见的误区与细节有哪些

2023-06-17 02:06:55 894人浏览 独家记忆
摘要

这篇文章主要讲解了“Java常见的误区与细节有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java常见的误区与细节有哪些”吧!在Java中,没有Goto语句。因为大量使用goto语句会

这篇文章主要讲解了“Java常见的误区与细节有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java常见的误区与细节有哪些”吧!

在Java中,没有Goto语句。因为大量使用goto语句会降低程序的可读性和可维护性,所以Java语言取消了goto的使用。同时,为了避免程序员自行使用goto所带来的混乱,Java语言仍将goto定义为一个关键字,但是没有定义任何语法,故称为“保留字”。

true、false和null在IDE中虽然以不同的颜色显示,但是并不是关键字,而是“字面常量”,就和String类型的abc一样。

定义名称时尽量避免使用$,因为编译器在对.java文件进行编译的时候,会将”$”编译成顶层类型与底层类型的连接符。见下例:

Java常见的误区与细节有哪些

在编译(javacTest3.java)这段代码的时候,编译器会报以下错误:Test.java:12:错误:类重复:com.javastack.Test.Outer.InnerclassInner{^

4Unicode转义字符处理的非常早,在解析程序之前。例如:

Java常见的误区与细节有哪些

在程序中出现这两行代码编译报错。这两个Unicode码分别表示”换行”和”回车”,所以,在编译器编译的时候,代码是这样的:

Java常见的误区与细节有哪些

Unicode码使用16位字符编码,在Java中用char类型来表示。现在Unicode已经扩展到一百万个字符,超出16位限制的成为增补字符。所有增补字符都不能用字符常量来表示。

当short,byte,char参加运算时,结果为int型,而非与较高的类型相同。如果变量是byte,short,byte类型,当对其赋予编译时期的常量,而该常量又没有超过变量的取值范围时,编译器就可以进行隐式的收缩转换。这种隐式的收缩转换是安全的,因为该收缩转换只适用于变量的赋值,而不适用于方法调用语句,即不适用于方法调用时的参数传递。(详见java中默认类型转换的小问题)

注意char类型,这是一个无符号类型。因此,char与short或char与byte之间的转换必须显示地使用类型转换。从byte到char的转换为扩展收缩转换,该转换比较特殊,即先将byte扩展转换到int,然后再收缩到char。

在整型数据间的扩展转换中,如果操作数是char类型(无符号类型),则进行无符号扩展,扩展位为0.如果操作数是byte,short或int(有符号类型),则进行有符号扩展,扩展位为该变量的符号位。

整型数据之间的收缩转换,仅仅是截断并丢弃高位,不做任何其他处理。

0.1+0.2不等于0.3.System.out.println((double)0.1+(double)0.2);这条语句的输出结果是0.30000000000000004。因为计算机使用二进制来存储数据,而很多小数都不能够准确地使用二进制来表示(事实上,大多数地小数都是近似的),就像使用十进制小数不能准确地表示1/3这样地分数一样。大多数地浮点型,在计算机中只是近似地存储其值,而不像整型那样准确地存储。又例,这是一个死循环:for(floatf=10.1f;f!=11;f+=0.1f){}

float类型可以保留7~8个有效数字,而double类型可以保留15~16个有效数字,因而当int类型或long类型数值多于double或float地有效数字时,该值的一些***有效位就会丢失,从而造成精度丢失,这时,就会采用IEEE754最近舍入模式,提取与该整型值最接近的浮点值。尽管整型向浮点型的转换属于扩展转换,但当数值很大或很小(绝对值很大)时,就会产生一定的精度丢失。

i+++j如何计算?(这个问题在C/C++)中讨论是没有多大意义的,因为C/c++依赖于实现的硬件结构,不同的环境结果也会不同。不过在Java中,这个结果是固定的,不受其运行的硬件环境与平台的影响)答:根据贪心规则,前置++优于后置++,结果是(i++)+j

i++和++i其实都是先+1,再赋值。++i,没什么好说的;i++,以j=i++;为例在底层的实现是:temp=i;i=i+1;j=temp;所以,i=15;i=i++;这个表达式的结果是15.(因为加一之后又执行了一次赋值,从16变回15)

+0与-0在浮点类型变量存储中,符号位是不同的。当-0和+0参与浮点类型的相关运算(例如相除与求余运算)时,可以产生不同的结果。

浮点的相除与求余运算不同与整型的相除与求余运算,当除数为0时,浮点运算不会产生ArithmeticException异常。

String类是非可变类,其对象一旦创建,就不可销毁。String类那些看似修改字符序列的方法实际上都是返回新创建的String对象,而不是修改自身对象。

由于String对象是不可改变的,因此具有线程安全性,可以自由地实现共享。

在String类内部,是使用一个字符数组(char[])来维护字符序列的。String的***长度也就是字符数组的***长度,理论上***长度为int类型的***值,即2147483647.在实际中,一般可获取的***值小于理论***值。

main()方法在表现行为上,与其他方法基本相同,可以重载,由其他方法调用,继承,隐藏,也可以抛出异常,带有类型参数。我们也可以在一个程序中通过反射来调用main方法(或其他方法)。

当两个或多个方法的名称相同,而参数列表不同时,这几个方法就构成了重载。重载方法可以根据参数列表对应的类型与参数的个数来区分,但是,参数的名称、方法的返回类型,方法的异常列表与类型参数不能作为区分重载方法的条件。

究竟选择哪个方法调用,顺序是这样的:

  • 在***阶段,自动装箱(拆箱)与可变参数不予考虑,搜索对应形参类型可以匹配实参类型并且形参个数与实参个数相同的方法;

  • 如果在步骤一不存在符合条件的方法,在第二阶段,自动装箱与拆箱将会执行。

  • 如果在步骤二中不存在符合条件的方法,在第三阶段,可变参数的方法将会考虑。

  • 如果3个阶段都没有搜索到符合条件的方法,将会产生编译错误。如果如何条件的方法多于一个,将会选择最明确的方法。最明确的方法定义为:如果A方法的形参列表类型对应的都可以赋值给B方法的形参列表类型,则A方法比B方法明确。如果无法选出最明确的方法,则会产生编译错误。

重写和隐藏的本质区别是:重写是动态绑定的,根据运行时引用所指向对象的实际类型来决定调用相关类的成员。而隐藏是静态绑定的,根据编译时引用的静态类型来决定调用的相关成员。换句话说,如果子类重写了父类的方法,当父类的引用指向子类对象时,通过父类的引用调用的是子类方法。如果子类隐藏了父类的方法(成员变量),通过父类的引用调用的仍是父类的方法(成员变量)。

构造器是递归调用的,子类的构造器会调用父类的构造器,直到调用Object类的构造器为止。

构造器没有创建对象,构造器是使用new创建对象时由系统调用的,用来初始化类的实例成员。从顺序上说,先是创建对象,然后再调用构造器的。(构造器并没有产生新的对象)

默认的构造器不为空,该构造器会调用父类的无参构造器,并可能执行实例成员变量的初始化。所以,默认的构造器至少调用了父类的构造器,它做的工作还可能更多,包括实例变量声明初始化与实例初始化块,都是在构造器中执行的。

当==或!=运算符的两个操作数的类型一个是基本数据类型,另一个是包装类引用类型时,将引用类型拆箱转换为基本数据类型,然后比较两个基本数据类型的值是否相等。

在Java中,数组也是类,数组声明的引用变量指向数组类型的对象。所有的数组都继承Object类,并且实现了java.lang.Cloneable与java.io.Serializable接口。数组的成员包括变量length(隐式存在)与从Object类继承的成员。Cloneable与Serializable是两个标记的接口,这两个接口中没有显式声明任何成员。

接口是完全抽象的设计,不能实例化。使A用new方式创建的借口类型,实际上是创建了一个匿名类,该匿名类实现了接口类型。

如果两个接口声明了相同的变量x,则当某接口同时继承这两个接口,或者某类同时实现这两个接口时,通过简单名称访问会产生编译错误。

如果两个接口中声明了相同名称的方法m,并且两个方法没有构成重载,则当某接口能够同时继承这两个接口,或者某类能够同时继承这两个接口时,必须存在一种方法签名,使得该签名同时为两个m方法签名的子签名,并且在方法的返回类型上,必须存在一种类型,使得该类型同时为两个m方法返回类型的可替换类型。

感谢各位的阅读,以上就是“Java常见的误区与细节有哪些”的内容了,经过本文的学习后,相信大家对Java常见的误区与细节有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Java常见的误区与细节有哪些

本文链接: https://www.lsjlt.com/news/286888.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java常见的误区与细节有哪些
    这篇文章主要讲解了“Java常见的误区与细节有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java常见的误区与细节有哪些”吧!在Java中,没有goto语句。因为大量使用goto语句会...
    99+
    2023-06-17
  • SEO常见误区有哪些
    小编给大家分享一下SEO常见误区有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!  一、内容一定要原创  关于内容原创,不能说他不好,但也不能一味的刻意追求,...
    99+
    2023-06-10
  • python学习中常见的误区有哪些
    这篇文章主要介绍“python学习中常见的误区有哪些”,在日常操作中,相信很多人在python学习中常见的误区有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python学习中常见的误区有哪些”的疑惑有所...
    99+
    2023-06-27
  • JAVA语言的常见误解有哪些
    这篇文章主要介绍JAVA语言的常见误解有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.JAVA是HTML的扩充JAVA是一个编程语言,HTML是一个页面描述语言。除了新版本HTML可以在WEB页中插入JA-V...
    99+
    2023-06-03
  • 常见ddos防御错误的区域有哪些
    今天小编给大家分享一下常见ddos防御错误的区域有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了...
    99+
    2024-04-02
  • Golang 函数调试的常见误区有哪些?
    go 函数调试的常见误区包括:忽略日志记录,导致缺乏有价值的错误信息。滥用断言,可能导致程序意外退出。使用全局变量进行调试,可能引起并发问题。正确地应用日志记录、断言和局部变量可以有效避...
    99+
    2024-04-17
    调试 golang 并发访问 同步机制
  • 服务器配置的常见误区有哪些
    服务器配置的常见误区有:1、租用高档服务器却使用低配置方案,导致服务器的整体性能降低;2、不用服务器自带的冗余功能,存储方面的安全和性能优化没有保障;3、不了解服务器的性能瓶颈,导致组件的性能没有被发挥出来,造成资源浪费。具体内容如下:高档...
    99+
    2024-04-02
  • Java异常处理的误区有哪些
    这篇文章主要介绍“Java异常处理的误区有哪些”,在日常操作中,相信很多人在Java异常处理的误区有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java异常处理的误区有哪些”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-17
  • Java开发中常见错误有哪些
    这篇文章主要讲解了“Java开发中常见错误有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java开发中常见错误有哪些”吧!编译器错误编译器错误消息在J...
    99+
    2024-04-02
  • 常见的AngularJS错误有哪些
    这篇文章主要为大家展示了“常见的AngularJS错误有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“常见的AngularJS错误有哪些”这篇文章吧。1.在...
    99+
    2024-04-02
  • 常见的AdobeFlex误解有哪些
    小编给大家分享一下常见的AdobeFlex误解有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!常见AdobeFlex误解在Qcon上,Adobe的JamesW...
    99+
    2023-06-17
  • tomcat常见的错误有哪些
    常见的Tomcat错误包括:1. 404 Not Found:请求的资源未找到。2. 500 Internal Server Err...
    99+
    2023-09-22
    tomcat
  • nodejs常见的错误有哪些
    小编给大家分享一下nodejs常见的错误有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!node的十大常见错误:1、阻塞事件...
    99+
    2024-04-02
  • SQL的常见错误有哪些
    本篇内容主要讲解“SQL的常见错误有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQL的常见错误有哪些”吧!1. Queries语句的执行顺序SQL的入门...
    99+
    2024-04-02
  • 构建Flex应用时常见误区有哪些
    小编给大家分享一下构建Flex应用时常见误区有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!构建Flex应用的几大误区在这篇新闻中,Adobe的James W...
    99+
    2023-06-17
  • 常见AdobeFlex误解有哪些
    这篇文章主要介绍常见AdobeFlex误解有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!对AdobeFlex的误解在Qcon上,Adobe的JamesWard和InfoQ.com一起分享了他推广传播Flex应用...
    99+
    2023-06-17
  • 常见CSS错误有哪些
    这篇文章将为大家详细讲解有关常见CSS错误有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。代码如下:区别IE6与FF: background:orange;*background:blue; 区别IE...
    99+
    2023-06-08
  • MySQL常见错误有哪些
    小编给大家分享一下MySQL常见错误有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、Can’t connect to M...
    99+
    2024-04-02
  • 常见的Java异常有哪些
    本篇文章为大家展示了常见的Java异常有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。异常是 Java 程序中经常遇到的问题,我想每一个 Java 程序员都讨厌异常,一 个异常就是一个 BUG,...
    99+
    2023-06-16
  • golang常见错误有哪些
    golang常见错误有:1、空指针引用错误;2、切片越界错误;3、并发竞争;4、垃圾回收性能问题;5、死锁;6、异常处理不当。本教程操作环境:windows10系统、golang1.20.1版本、DELL G3电脑。Golang是一种在近年...
    99+
    2023-07-10
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作