JAVA语法基础(课堂ppt问题总结)
一:运行源代码EnumTest.java,分析运行结果。
代码如下:
public class EnumTest {
public static void main(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};
结果截图:
枚举类型(Enumerated Type) 很早就出现在编程语言中,它被用来将一组类似的值包含到一种类型当中。而这种枚举类型的名称则会被定义成独一无二的类型描述符,在这一点上和常量的定义相似。不过相比较常量类型,枚举类型可以为申明的变量提供更大的取值范围。
二:原码,反码,补码的区别辨析
原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值,
正数的反码是其本身
负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.
补码的表示方法是:
正数的补码就是其本身
负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
示例程序:
1 2 3 4 5 6 7 8 9 10 11 | public class qq { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println( 0xffffffff ); } } |
得到结果为-1
java中数据使用的是反码表示的。
三:通过原始类型的包装类完成类型转换
源代码:
1 2 3 4 5 6 7 8 9 | public class qq { public static void main(String args[]) { System.out.println( "0.05 + 0.01 = " + ( 0.05 + 0.01 )); System.out.println( "1.0 - 0.42 = " + ( 1.0 - 0.42 )); System.out.println( "4.015 * 100 = " + ( 4.015 * 100 )); System.out.println( "123.3 / 100 = " + ( 123.3 / 100 )); } } |
截图:
四:Java变量遵循“同名变量的屏蔽原则”
1 | Java变量是有作用域的。如果两个作用域完全不同的变量同名,不会引起冲突。举一个简单的例子:一班有一个学生叫小明,二班也有一个学生叫小明,在一班和二班分开上课的时候,点名就不会有冲突。验证代码: |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public class qq { /** * @param args */ private static int code= 12 ; public static void main(String[] args) { // TODO Auto-generated method stub int code=- 10 ; System.out.println(code); } } |
结果截图:
1 | 五:为什么 double 类型的数值进行运算得不到“数学上精确”的结果? |
1 | 这个涉及到二进制与十进制的转换问题。N进制可以理解为:数值×基数的幂,例如我们熟悉的十进制数 123.4 = 1 × 10 ²+ 2 × 10 + 3 ×( 10 的 0 次幂)+ 4 ×( 10 的- 1 次幂);其它进制的也是同理,例如二进制数 11.01 = 1 × 2 + 1 ×( 2 的 0 次幂)+ 0 + 1 ×( 2 的- 2 次幂)=十进制的 3.25 。 double 类型的数值占用64bit,即 64 个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差(除非实际数据恰好是 2 的n次方)。六:java中输出格式源代码如下: |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public class qq { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int X= 100 ; int Y= 200 ; System.out.println( "X+Y=" +X+Y); System.out.println(X+Y+ "=X+Y" ); } } |
1 |
结果截图:
因为+X+Y表示只是输出X和Y的值,X+Y表示输出X+Y的值。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了