Java语言基础问题
2017-10-06 12:54 默默不语 阅读(248) 评论(0) 编辑 收藏 举报1. 一个Java类文件中可以有几个公有类
在eclipse中测试代码时会出现上图所示的错误,此处只允许用final或abstract来修饰类,也就是一个类文件中只能有一个public修饰的类,此下对于这个问题作出一点分析。
package包主要就是用来存放类的,可以有无数个public类,对此没有个数限制,但是一个Java源文件中只能有一个public类。
java程序是从一个public类的main函数开始执行的,就像当初学习C语言时一个工程中只能有一个main函数。 只能有一个public类是为了给类装载器提供方便。如果一个类被声明为public,则它本身所在的源文件名也必须与类名相同,并且严格区分大小写。
每个编译单元都只能有一个public 类。因为每个编译单元都只能有一个公共接口,用public类来表现。该接口可以按照要求包含众多的支持包访问权限的类。如果有一个以上的public 类,编译器就会报错。 当然一个编译单元内也可以没有public类。
在一个源文件.JAVA文件中可以有很多类,只有一个public类。因为在public类中找程序的入口, 若有很多public类,计算机就找不到入口,那么程序就无法执行了。
2.Java变量遵循“同名变量的屏蔽原则”
通过两图对比可以看出,当注释掉main函数中的int number=1;时显示结果为0。
因为在此程序中,第一个number为全局变量,第二个number为局部变量。在java中局部变量可以覆盖全局变量的值,当在局部使用某个变量的时候JVM会优先找和当前使用位置近的变量定义。
3.Java中的类型转换
①byte(字节):8bits,数值范围为-128-127
②short(短整型):16bits,数值范围为-32768-32768
③int(整型):32bits,数值范围为-2147483648-2147483648
④long(长整型):64bits,数值范围为-9233372036854477808-9233372036854477808
⑤float(浮点型):32bits,数值范围为-3.40292347E+38-3.40292347E+38
⑥double(双精度):64bits,数值范围为-1.7976931486231570E+308-1.7976931486231570E+308
⑦char(字符型):16bits,数值范围为‘\u0000-u\ffff’
⑧boolean(布尔型):1bits,数值范围为true/false
上图中int指向double的箭头应为实线,而且应还有一条从long指向float的虚线箭头,此为该图中的一点错误。
Java 语言中的数据类型转换有两种:①自动类型转换:编译器自动完成类型转换,不需要在程序中编写代码。②强制类型转换:强制编译器进行类型转换,必须在程序中编写代码。
自动类型转换的转换规则为从存储范围小的类型到存储范围大的类型,不会发生精度的损失。而强制类型转换的转换规则为从存储范围大的类型到存储范围小的类型,此种转换会发生精度的损失。
4. 为什么double类型的数值进行运算得不到“数学上精确”的结果?
float 和double类型主要是为科学计算和工程计算而设计的,他们执行二进制浮点运算,这两种类型在计算机中的储存分为三部分:符号位、指数为、尾数部分。数据以二进制存储在计算机时,会出现无线循环系列,在数据转化中会出现错误。十进制不能准确的表示1/3,同样二进制不能精确的表示1/10。
double类型的数值占用64bit,即64个二进制数,除去最高位表示正负符号的位,还有63位,而我们给出的数值,在大多数情况下需要比64bit更多的位数才能准确表示出来(甚至是需要无穷多位),而double类型的数值只有64bit,后面舍去的位数一定会带来误差,无法得到“数学上精确”的结果。
5.动手动脑
语句一输出中“+”连接X和Y,计算结果是将X和Y将两数据连接。
语句二输出中“+”是运算符,对X和Y求和。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!