ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

动手动脑

2020-10-01 08:31:58  阅读:234  来源: 互联网

标签:动脑 System 动手 枚举 println Size 原码 out


动手动脑

 

一、EnumTest.java

package day02;

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


 

 

 

相关问题:

 

1)类 class isPrimitive()方法

  • 用于检查此class 对象是否表示原始类型。(boolean\char\byte\short\int\long\float\double\void)
  • 此方法是一种非静态方法,只能通过类对象访问,如果尝试使用类名称访问该方法,则会收到错误消息。

2)System.out.println(s.getClass().isPrimitive());

  • 调用enum中的方法。

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

  • 对u进行赋值,与1相似,使用不同的赋值语句。

4)or(Size value:Size.values())

{

System.out.println(value);

}

  • 对枚举进行遍历,并且找最大的。

5)enum Size{SMALL,MEDIUM,LARGE};

  • 表明使用类ENUM,名字叫Size,其中有元素SMALL,MEDIUM,LARGE,这几个元素可以看做类中的对象。

6)System.out.println()

  • System.out.println(s); //运行结果:SMALL(枚举直接提供了toString的方法)
  • System.out.println(s.name());//运行结果:SMALL(打印名字)
  • System.out.println(s.ordinal());///得到枚举在序列中的位置
  • System.out.println(s.getClass());//得到枚举类
  • System.out.println(s.getDeclaringClass());//返回本类的申明处

(摘自:  https://blog.csdn.net/weixin_30251587/article/details/96731005 )

 

结论:

 

枚举类型的使用是借助 ENUM 这样一个类,这个类是 JAVA 枚举类型的公共基本类。枚举目的就是要让某个变量的取值只能为若干固定值中的一个。

枚举类型是引用类型。(除了八种基本类型外其他都是引用类型)

枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象,相同的值则引用同一个对象。

可以使用“==”和equals() 方法直接比对枚举变量的值。

 

二、数值的二进制表示:弄清楚反码、补码和原码这几个概念,然后编写示例程序,对正数、负数进行各种位操作,观察输出结果,与手工计算的结果进行比对,看看Java中的数是采用上述哪种码表示的

 

反码:正数的反码还是等于原码;负数的反码就是他的原码除符号位外,按位取反。

补码:正数的补码等于他的原码,负数的补码等于反码+1。

原码:是最简单的机器数表示法。用最高位表示符号位,‘1’表示负号,‘0’表示正号。其他位存放该数的二进制的绝对值。

 

原码、补码、反码的深入理解与原理

 

首先先猜想是由原码表示,程序验证

 

1         int a=1;
2         int b=-1;
3         int sum=a+b;
4         System.out.println(sum);

 

可知程序的结果为0,而在二进制中00000001+10000001=10000010,换算成十进制为-2。显然出错,故java中数值并非是由原码储存

同理,在使用反码表示时,也会出现同样的问题: (00000001) 反+ (11111110)反 = (11111111)反 = ( -0 )

 

而在补码中这没有这个问题:(00000001)补 + (11111111)补 = (00000000)补 = ( 0 )

 

结论:在java中,数值是由补码表示的

 

   (摘自:   https://www.cnblogs.com/heiyang/p/9748054.html  )

 

三、Addition.java  (两数相加)

 

package day02;

import javax.swing.JOptionPane;

public class Addition {
    public static void main(String[] args) {
        String firstNumber;// first string entered gy user
        String secondNumber;// second string entered by user
        int number1; // first number to add
        int number2;// second number to add
        int sum;// sum of number1 and number2

        // read in first number from user as a string
        firstNumber = JOptionPane.showInputDialog("Enter first integer");

        // read in second number from user as a string
        secondNumber = JOptionPane.showInputDialog("Enter second integer");

        // convent numbers from type String to type int
        number1 = Integer.parseInt(firstNumber);
        number2 = Integer.parseInt(secondNumber);

        // add the numbers
        sum = number1 + number2;

        // display the results
        JOptionPane.showMessageDialog(null, "The sum is" + sum, "Results", JOptionPane.PLAIN_MESSAGE);
        System.exit(0);// terminate the program

    }

};

 

 

相关问题:

 

1)关于integer

http://m.biancheng.net/view/890.html

 

2)java消息提示框JOptionPane的使用方法

https://blog.csdn.net/c1481118216/article/details/51921521?utm_source=app

 

四、Java变量遵循“同名变量的屏蔽原则”,请自己编写一些测试代码,有意识地在不同地方定义一些同名变量,看看输出的到底是哪个值。

 

标签:动脑,System,动手,枚举,println,Size,原码,out
来源: https://www.cnblogs.com/ltw222/p/13757254.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有