[JAVA] 1. Java中的基础知识之数据类型 [Java中的默认类型]

Posted modai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[JAVA] 1. Java中的基础知识之数据类型 [Java中的默认类型]相关的知识,希望对你有一定的参考价值。

首先要提一句的是,在JAVA语言中,当我们要声明一个长整型或者单精度的数值类型的变量的时候,经常会见到在一个数字后面出现F/fL/l。那么为什么要加入这些标识呢?

这是因为:在Java中,当开发者输入了数字,如:25,这个数字默认的类型为int型,其支持的数据范围如下,当我们的数字大小超过了int型支持的大小之后,int类型所支持的内存大小就无法满足了,所以编译器会报编译错误。为了声明长整型的数字,就需要在尾部加上L/l,以高速编译器,这是一个长整型的数字。、

这个就和python中0b标识二进制数据,0o标识八进制,0x标识十六进制

同理,在java编译器中,小数数值默认为double双精度类型,当我们为了节省内存选用单精度时,就需要使用F/f进行标识。

技术图片

1.1 原始数据类型:


public class Main {

    public static void main(String[] args) {
        long testLong = 2_234_123_123L;
        float testFloat = 2.34F;
    }
}

1.2 引用类型

import java.util.Date;

public class Main {

    public static void main(String[] args) {
        byte age = 30;
        Date now = new Date();
        System.out.println(now);
    }
}

原始类型的赋值会分配新的内存,所以将指向不同的地址。

引用类型的赋值只是将地址赋给了另一个变量,其指向的内存是同一个,所以一个变则都变。

import java.awt.*;

public class Main {

    public static void main(String[] args) {
        Point point1 = new Point(1, 1);
        Point point2 = point1; //java.awt.Point[x=1,y=1]
        point1.x = 2;
        System.out.println(point2); //java.awt.Point[x=2,y=1]
    }
}

1.3 两种Array生成方式,Array(定长)

import java.util.Arrays;

public class Main {

    public static void main(String[] args) {
        int[] numbers = new int[3];
        numbers[0] = 1;
        numbers[2] = 2;

        int[] numbers2 = {1, 2, 3, 4, 5};
        System.out.println(Arrays.toString(numbers));
        System.out.println(numbers2.length);
    }
}

注意,对于数组的输入,这里需要引入Arrays包,调用其中的toString方法,对于高维数组,需要使用deepToString

1.4 java格式化数字

import java.text.NumberFormat;

public class Main {

    public static void main(String[] args) {
        NumberFormat percent = NumberFormat.getPercentInstance();
        String res = percent.format(0.456);
        System.out.println(res);
    }
}

默认有针对百分数和货币的转换。

1.5 读取输入流

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("姓名:");
        String res = scanner.nextLine().trim();
        System.out.println("你是:" + res);
        ;
    }
}

项目:计算贷款月供:

import java.text.NumberFormat;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        //计算贷款
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入本金: ");
        float PrincipalAmount = scanner.nextFloat();
        System.out.print("请输入年利率: ");
        float interestRateOfYear = scanner.nextFloat();
        System.out.print("请输入贷款年份: ");
        int numberOfPaymentsByYear = scanner.nextInt();
        float P = PrincipalAmount;
        float i = interestRateOfYear / 12 / 100;
        int n = numberOfPaymentsByYear * 12;
        double M = P * i * Math.pow(1 + i, n) / (Math.pow(1 + i, n) - 1);
        System.out.println("您每月需还贷: " + NumberFormat.getCurrencyInstance().format(M));
    }
}

运行起来没错,但是嗯~ o( ̄▽ ̄)o,太稚嫩了,看看大佬的写法

import java.text.NumberFormat;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        //计算贷款
        final byte MONTHS_IN_YEAR = 12;
        final byte PERCENT = 100;

        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入本金: ");
        float principal = scanner.nextFloat();
        System.out.print("请输入年利率: ");
        float interestRateOfYear = scanner.nextFloat();
        System.out.print("请输入贷款年份: ");
        byte numberOfPaymentsByYear = scanner.nextByte();
        float monthlyInterest = interestRateOfYear / MONTHS_IN_YEAR / PERCENT;
        int numberOfPayments = numberOfPaymentsByYear * MONTHS_IN_YEAR;
        double mortgage = principal
                * monthlyInterest * Math.pow(1 + monthlyInterest, numberOfPayments)
                / (Math.pow(1 + monthlyInterest, numberOfPayments) - 1);
        System.out.println("您每月需还贷: " + NumberFormat.getCurrencyInstance().format(mortgage));
    }
}

大佬考虑到了魔法数字的影响,所以用常量声明了。

以上是关于[JAVA] 1. Java中的基础知识之数据类型 [Java中的默认类型]的主要内容,如果未能解决你的问题,请参考以下文章

Java基础系列之基础数据类型

Java基础总结之数组

java基础之 数据类型

java总结之基础类型与常量池

Java开发知识之Java中的泛型

java基础之数组