java 2022/9/9小测有感
关于2022/9/9的Java课程的课后总结:
1、JAVA的基本运行单位是类还是方法?
答:基本运行单位是类。
2、类由什么组成?
答:类由类变量和类方法组成。
3、变量的类型,相互之间可以转换吗,浮点数?
答:相互之间可以进行转换,浮点数也可以
4、String是一个数据类型吗?
答:String不是一个数据类型,其实String是一个系统预定义的类,平常使用的是类的实例化。
5、static代表的含义?
答:static代表着静态类型,用来修饰成员变量和成员方法,也可以形成静态static代码块。
6、仔细阅读示例: EnumTest.java,运行它,分析运行结果?你能得到什么结论?你掌握了枚举类型的基本用法了吗?
上面为运行后得到的结果。
Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一个年的 12 个月份,一个星期的 7 天,方向有东南西北等。
Java 枚举类使用 enum 关键字来定义,各个常量使用逗号 , 来分割。
枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象。相同的值则引用同一个对象。
可以使用“==”和equals()方法直接比对枚举变量的值,换句话说,对于枚举类型的变量,“==”和equals()方法执行的结果是等价的。
public class demo { public static void main(String[] args) { Size s=Size.SMALL; //s和SMALL同理 Size t=Size.LARGE; 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()){ //values()用于返回枚举类中的所有值,“:”用来遍历后面的集合,取出所有元素。 System.out.println(value); } } } enum Size{SMALL,MEDIUM,LARGE};
7、阅读相应教材,或者使用互联网搜索引擎,弄清楚反码、补码跟原码这几个概念,然后编写示例程序,对正数、负数进行各种位操作,观察输出结果,与手工计算的结果进行比对,看看Java中的数是采用上述哪种码表示的。
答:
原码:就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
反码:反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码:补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
public class de { public static void main(String[] args) { int a=1; int b=2; int sum=a+b; System.out.println(sum); } }
运行结果为3;
根据计算,补码的结果与实际运算是一致的,故java使用的应当是补码。
8、Java变量遵循“同名变量的屏蔽原则”,请课后阅读相关资料弄清楚相关知识,然后自己编写一些测试代码,就象本示例一样,有意识地在不同地方定义一些同名变量,看看输出的到底是哪个值。
答:
public class de { private static int value=4; public static void main(String[] args) { int value=2; System.out.println(value); } }
输出结果为2;
事实证明,当一个变量在全局和局部同时被定义时,优先使用局部变量的数值,而全局变量的数值则被屏蔽了。
9、看着这个图,再查查Java中每个数据类型所占的位数,和表示数值的范围,你能得出什么结论?
而N进制可以理解为:数值×基数的幂,例如我们熟悉的十进制数123.4 = 1×102+2×101+3×100+4×10(-1);其它进制的也是同理,例如二进制数11.01 = 1×21+1×20+0+1×2(-2) = 十进制的3.25。
Double类型的数值占用64bit,即64个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差(除非实际数据恰好是2的n次方)。
Float和Double类型为我们提供了快速运算,然而问题在于转换为二进制的时候,有些数字不能完全转换,只能无限接近于原本的值,这就导致了在后来的运算会出现不正确结果的情况。
想要解决精度不准确的问题,可以使用java中的BigDecimal类!!!
注意:在构建BigDecimal对象时应使用字符串而不是double数值,否则,仍有可能引发计算精度问题。
import java.math.BigDecimal; public class de { public static void main(String[] args) { BigDecimal f1 = new BigDecimal("0.05"); BigDecimal f2 = BigDecimal.valueOf(0.01); BigDecimal f3 = new BigDecimal(0.05); System.out.println("*********String类型作为参数的BigDecimal********************"); System.out.println("0.05 + 0.01 = " + f1.add(f2)); System.out.println("0.05 - 0.01 = " + f1.subtract(f2)); System.out.println("0.05 * 0.01 = " + f1.multiply(f2)); System.out.println("0.05 / 0.01 = " + f1.divide(f2)); System.out.println("*********double类型作为参数的BigDecimal********************"); System.out.println("0.05 + 0.01 = " + f3.add(f2)); System.out.println("0.05 - 0.01 = " + f3.subtract(f2)); System.out.println("0.05 * 0.01 = " + f3.multiply(f2)); System.out.println("0.05 / 0.01 = " + f3.divide(f2)); } }
运行结果如下:
11、以下代码的输出结果是什么? 为什么会有这样的结果
int X=100; int Y=200; System.out.println("X+Y="+X+Y); System.out.println(X+Y+"=X+Y");
输出结果如下:
第一种输出“X+Y”是字符串进行的链接
第二种输出“X+Y”是进行了数值的计算
经过加了个括号之后:
int X=100; int Y=200; System.out.println("X+Y="+(X+Y)); System.out.pritln(X+Y+"=X+Y");
输出结果如下:
故而要勤用括号!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通