zoukankan      html  css  js  c++  java
  • 动手动脑1

    java语法基础练习

     

    1.阅读示例: 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};
    复制代码

         程序创立了枚举类型,创立枚举类型要用enum关键字枚举类型可以把相关的常量(编程规范:常量每个字母大写)放到一个枚举类型里,每个值的名称都会转化成一个字符串。由于enum本身也是一个类,因此不能被继承。

         程序中s和t引用的不是同一个对象,也不是原始数据类型。

    2.原码:在数值前直接加一符号位的表示法。byte的取值范围是 -27~ 27-1= 256

    反码:正数:正数的反码与原码相同。负数:负数的反码,符号位为“1”,数值部分按位取反。例如: 符号位 数值位

    补码:正数:正数的补码和原码相同。负数:负数的补码则是符号位为“1”。并且,这个“1”既是符号位,也是数值位。数值部分按位取反后再在末位(最低位)加1。也就是“反码+1”
    java中的数是用补码表示的。
    3.java变量遵循“同名变量的屏蔽原则”,变量输出的值与作用域有关。
    复制代码
    public class Try {
        
        public static int potato=10;
        public static void main(String args[]) {
            //After a day
            int eaten=2;
            int potato=8;
            System.out.println("吃了"+eaten+"后还剩"+potato);
        }
    
    }
    复制代码

    程序运行结果为:

    4.每个数据类型所占的位数及其能够表示的范围

    short  16位 -32768~32767  -2^15~2^15-1

    int  32位 -2147483648~2147483647 -2^31~2^31-1

    long  64位 -922372036854775808~9223372036854775807 -2^63~2^63-1

    float  32位 1.4e-45~3.4028235e38

    double  64位 4.9e-324~1.7976931348623157e308

    5.运行一段程序,分析结果

    复制代码
    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类型进行计算,结果是不精确的。

    因为这个涉及到二进制与十进制的转换问题。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次方)。举个例子来说,比如要用4bit来表示小数3.26,从高到低位依次对应2的1,0,-1,-2次幂,根据最上面的分析,应当在二进制数11.01(对应十进制的3.25)和11.10(对应十进制的3.5)之间选择。简单来说就是我们给出的数值,在大多数情况下需要比64bit更多的位数才能准确表示出来(甚至是需要无穷多位),而double类型的数值只有64bit,后面舍去的位数一定会带来误差,无法得到“数学上精确”的结果。

    6.输入一段代码判断输出结果:

    复制代码
    public class Try {
        
        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");
        }
    
    }
    复制代码

    结果:

    原因,+X+Y,表示依次输出XY的值,而X+Y表示一种运算

    7.用对话框输入数字并计算,需要判断运算符

    复制代码
    import javax.swing.JOptionPane;
    
    public class Calcurlate {
        
        public static void main(String args[])
        {
            String firstNumber,secondNumber;
            String operator;
            int number1,number2,result;
            
            firstNumber=JOptionPane.showInputDialog( "Enter the first integer" );
            secondNumber=JOptionPane.showInputDialog("Enter the second integer");
            operator=JOptionPane.showInputDialog("Enter the operator");
            
            number1 = Integer.parseInt( firstNumber ); 
            number2 = Integer.parseInt( secondNumber );
            
            if(operator.equals("+"))
            {
                result=number1+number2;
                
                JOptionPane.showInputDialog("the result is"+result);
            }
            
            if(operator.equals("-"))
            {
                result=number1-number2;
                
                JOptionPane.showInputDialog("the result is"+result);
            }
            
            if(operator.equals("*"))
            {
                result=number1*number2;
                
                JOptionPane.showInputDialog("the result is"+result);
            }
            
            if(operator.equals("/"))
            {
                result=number1/number2;
                
                JOptionPane.showInputDialog("the result is"+result);
            }
        }
    
    }
     
  • 相关阅读:
    iOS中Zbar二维码扫描的使用
    SOJ 1135. 飞跃原野
    SOJ 1048.Inverso
    SOJ 1219. 新红黑树
    SOJ 1171. The Game of Efil
    SOJ 1180. Pasting Strings
    1215. 脱离地牢
    1317. Sudoku
    SOJ 1119. Factstone Benchmark
    soj 1099. Packing Passengers
  • 原文地址:https://www.cnblogs.com/zyx111/p/5965972.html
Copyright © 2011-2022 走看看