马太效应 发表于 2017-7-10 23:17:26

Java暑期学习Day06

今天是第6天,希望能支持下去
ps.写了一个多小时的突然崩了我的心是崩溃的{:10_291:}

① 使用标准类之java.util.Scanner
package tankwar;
import java.util.Scanner;

public class A {

        public static void main(String[] args) {
                Scanner scanner = new Scanner(System.in);
                int number = (int) (Math.random() * 10);
                int guess;

                do {
                        System.out.println("猜数字(0~9):");
                        guess = scanner.nextInt();
                } while (guess != number);

                System.out.println("猜中了...XD");

        }

} A. 在建立Scanner实例时,必须传入java.io.InputStream的实例
   System.in就是一种InputStream

B. Scanner的nextInt()方法会看着标准输入中,有没有输入下一个字符串(以空格或换行分隔),有的话会尝试将之剖析为int类型。

    Scanner对每个基本类型,都会有对应的nextXXX()方法,如nextByte()、nextShort()、nextBoolean()等

    如果直接取得上一个字符串(以空格或换行分隔),则使用next(),如果想取得用户输入的整行文字,则使用nextLine()(以换行分隔)


② 使用标准类之java.math.BigDecimalpackage tankwar;

import java.math.BigDecimal;//取得更好的精确度

public class A {

        public static void main(String[] args) {

                BigDecimal operand1 = new BigDecimal("1.0");
                BigDecimal operand2 = new BigDecimal("0.8");

                BigDecimal result = operand1.subtract(operand2);
                System.out.println(result);//0.2

        }

}

A. Java(包括其他程序语言)遵守IEEE 754浮点数运算规范,使用分数与指数来表示浮点数

B. BigDecimal提供有plus()、substract()、multiply()、divide()等方法,可以进行加、减、乘、除等运算,这些方法都会返回代表运算结果的BigDecimal

③ 对象指定与相等性

package tankwar;

import java.math.BigDecimal;

public class A {

        public static void main(String[] args) {

                int x = 1;
                int y = 1;
                int z = x;
                System.out.println(x == y);// true
                System.out.println(x == z);// true
       

                BigDecimal a = new BigDecimal("1.0");
                BigDecimal b = new BigDecimal("1.0");

                System.out.println(a == b);// false
                System.out.println(a.equals(b));// true

        }

}


区别点: 1.“==”对于基本数据类型,判断两个变量的值是否相等。
“equals”不能用于基本数据类型。只能用于类变量。对于基本数据类型要用其包装类。
2.“==”用于比较两 个变量的值是否相等,而不是变量引用的对象是否相等 。
   (因为对象变量的存储的是对象在内存中的路径,即内存地址。所以用“==”比较时,即使对象的值相等,但是他们的内存地址不同。)

3.“==”比较的是值【变量(栈)内存中存放的对象的(堆)内存地址】
    equals用于比较两个对象的值是否相同【不是比地址】


4.如果一个类没有自己定义equals方法,它默认的equals方法(从Object类继承的)就是使用==操作符,也是在比较两个变量指向的对象是否是同一对象,这时候使用equals和使用==会得到同样的结果



页: [1]
查看完整版本: Java暑期学习Day06