java思维题_java思考题

1.仔细阅读示例: EnumTest.java,运行它,分析运行结果? 你能得到什么结论?你掌握了枚举类型的基本用法了吗?

public classEnumTest {public static voidmain(String[] args) {

Size s=Size.SMALL;

Size t=Size.LARGE;//s和t引用同一个对象?

System.out.println(s==t); //

//是原始数据类型吗?

System.out.println(s.getClass().isPrimitive());//判断是否为类包的数据//从字符串中转换

Size u=Size.valueOf("SMALL");

System.out.println(s==u); //true//列出它的所有值

for(Size value:Size.values()){

System.out.println(value);

}

}

}enum Size{SMALL,MEDIUM,LARGE};

运行结果:

f4a0da3a674071343d473eb9d60ba506.png

第一个false是判断s和t是否引用同一个对象,第二个false是判断它是否为类包的数据,第三个ture 是判断s是否等于u,最后是列出它里面的所有元素,从中得出枚举类型是引用类型,枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象,相同的值则引用同一个对象,可以使用“==”和equals()方法直接比对枚举变量的值,换句话说,对于枚举类型的变量,“==”和equals()方法执行的结果是等价的。

2.阅读相应教材,或者使用互联网搜索引擎,弄清楚反码、补码跟原码这几个概念

原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值,

补码的表示方法是:正数的补码就是其本身负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)

反码的表示方法是:正数的反码是其本身负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.

3.Java变量遵循“同名变量的屏蔽原则”,请课后阅读相关资料弄清楚相关知识

bc8fa6ea5427bff2169a5cc88d3941a1.png

运行上图所示代码,输出结果为2,如果去掉 int value=2;则结果为1,在此实例中,第一个value是成员变量,也是全局变量,第二个value是局部变量,在java中局部变量可以覆盖全局变量,在局部使用某个变量的时候JVM会优先找和当前使用位置近的变量定义.

4.

cd51773a6bd3ef01f0882cfcf52e573e.png

beceb37dc46f142adf587bc428fb8064.png无精度损失

91471eeae750de403958bb9815d62c9f.png

看着这个图,再查查Java中每个数据类型所占的位数,和表示数值的范围,你能得出什么结论?

整型: byte(8),short(16),int(32), long(64) 浮点型: float(32), double(64),

java自动完成从低级类型向高级类型转换,即取值范围相对较小的数据类型转换成取值范围相对较大的数据类型。

5.

af6e5fca141162191f755dca5efa8ef1.png

你看到了什么样的输出,意外吗?

a32a1323801453547a44ca2febb80dc4.png

为什么double类型的数值进行运算得不到“数学上精确”的结果? 请通过互联网查找资料,或者是阅读相关计算机教材,解决这个问题。

事实上浮点运算很少是精确的,只要是超过精度能表示的范围就会产生误差。往往产生误差不是 因为数的大小,而是因为数的精度。因此,产生的结果接近但不等于想要的结果。尤其在使用 float 和 double 作精确运 算的时候要特别小心。可以考虑采用一些替代方案来实现。如通过使用 long 类型来转换。我们知道在计算机中浮点数的表示方法是由一个整数(即尾数)乘以一个基数(计算机中一般为2)的整次幂得到。(类似于科学计数法,科学记数法基数为10)float的内存结构为:符号位表示正负,1位 指数位,8位 尾数位,32位(符号位1表示负,0表示正)指数是以2为底的,范围是 -128 到 127,如果超过了127,则从-128开始计。 即:127+1=-128尾数都省去了第1位的1,所以在还原时要先在第一位加上1。它可能包含整数和纯小数两部分,也可能只包含其中一部分,视数字大小而定。对于带有整数部分的浮点数,其整数的表示法有两种,当整数大于十进制的16777215时使用的是科学计数法,如果小于或等于则直接采用一般的二进制表示法。科学计数法和小数的表示法是一样的。小数部分则是直接使用科学计数法,形式是X * ( 2 ^ n )。这样就导致浮点类型在计算机的存贮中无法精确表示。(百度查阅)

6.

以下代码的输出结果是什么?

int X=100;

int Y=200;

System.out.println("X+Y="+X+Y);

System.out.println(X+Y+"=X+Y");

为什么会有这样的输出结果?

输出结果:X+Y=100200

300=X+Y

原因:System.out.println("X+Y="+X+Y) String字符串后面是加和变量,加号起连接作用,然后把两个字符串连接成一个新的字符串输出。

System.out.println(X+Y+"=X+Y")中的“+”为加法运算符,即为两个数相加。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
总共11页 一万字左右 皆为个人上课整理笔记。 贴上前几道整理以作预览 1、 缩写JDK的含义是什么。 JDK 是Java开发工具包 (Java Development Kit ) 的缩写。它是一种用于构建在 Java 平台上发布的应用程序、applet 和组件的开发环境。其中包括了Java编译器、JVM、大量的Java工具以及Java基础API里面是Java类库和Java的语言规范,同时Java语言的任何改进都应当加到其中,作为后续版本发布。要成为一名程序员,JDK是一种最基本的工具。 (JDK是Java development toolkit,相当于是Java的库函数,是编译,运行java程序的工具包。) 2、 解释Java语言跨平台的技术基础。 因为Java程序编译之后的代码不是能被硬件系统直接运行的代码,而是一种“中间码”——字节码。然后不同的硬件平台上安装有不同的Java虚拟机(JVM),由JVM来把字节码再“翻译”成所对应的硬件平台能够执行的代码。因此对于Java编程者来说,不需要考虑硬件平台是什么。所以Java可以跨平台。 3、 什么是Java语言的自动垃圾收集。 4、 说明J2SE、J2ME、J2EE各自的含义。 J2EE是Java 2 enterprise edition是Java的一种企业版用于企业级的应用服务开发 J2SE是Java 2 standard edition是Java的标准版,用于标准的应用开发 J2ME是Java 2 Micro Edition是Java的微型版,常用于手机上的开发 J2EE,J2SE,J2ME是java针对不同的的使用来提供不同的服务,也就是提供不同类型的类库。 5、 Java的包是什么含义,有哪些作用。 包就是用来装不同java源文件和类文件的文件夹。 作用有两个:一个是防止重名现象,还有一个是隐藏具体实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值