动手动脑1

动手动脑1、

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);

                  }

         }

 

}

运行结果:

 

结论:枚举类型不是原始类型,它的每一个具体值都引用一个特定对象,相同的值就引用同一对象。使用==与equals方法比较执行效果相同。

 

动手动脑2:

 

反码:正数的反码是其本身,负数的反码是在其原码的基础上, 符号位(就是第一位)不变,其余各个位取反.

例(以8位二进制为例):原码00000001(1),10000001(-1)

反码00000001(1),11111110(-1)

0的反码,+0:00000000。-0:11111111。

补码:计算机中二进制形式的补数。补码是用来解决负数在计算机中的表示问题的。正数的补码就是其本身;负数的补码是在其原码的基础上,符号为不变,其余各位取反,最后加1.(即在反码的基础上加1)并且补码解决了0的符号及两个编码的问题。

例(以8位二进制为例):1:00000001。-1:11111111

原码:原码是一种计算机中对数字的二进制定点表示方法。就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值.原码的表示法是在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1,其余位表示数值的大小。

例(以8位二进制为例):(1)00000001,(-1)10000001

0的原码有两种,+0:00000000。-0:10000000

 

Java中的数使用补码表示。

程序验证:

package session;

import java.util.Random;

class text {

         private static int value=1;

         public static void main(String[] args) {

                  int i=1;

                  int j=-1;

                  System.out.println(i+j);

         }      

}

运行结果:

 

 

原码1+(-1)二进制表示:00000001+10000001=10000010,即结果为-2.显然不是原码表示。

反码1+(-1)二进制表示:00000001+11111110=11111111,结果为-0,也不是反码表示。

补码1+(-1)二进制表示:00000001+11111111=00000000.结果为0,所以java的数采用补码表示。

动手动脑3:

package session;

import java.util.Random;

class text {

         private static int value=1;

         public static void main(String[] args) {

                  int value=2;

                  System.out.println(value);

         }      

}

 

 

运行结果为2;证明全局变量与局部变量同名时,会优先使用局部变量。

结论:每个变量都有一个“有效”的区域(作用域),即变量被定义的区域,而出了这个区域,变量将不再有效(全局变量除外)。Java的同名屏蔽原则,即同名的变量在指定的范围内有自动屏蔽的原则。在程序中局部变量可以与全局变量同名,但在函数内使用这个变量时,会优先用到同名的局部变量,而不是全局变量。

动手实验:

public class TestDouble {

 

    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));

    }

}

运行结果:

 

 

结论:使用double类型进行运算,结果不准确。

动手动脑4:

public class Test {

public static void main(String[] args) {

        

         int X=100;

         int Y=200;

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

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

}

}

运行结果:

 

 

结论:字符串后面使用+会被看成两个字符串的连接,而在字符串之前使用就不会被认为连接。

posted @   chenghaixinag  阅读(80)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示