Java中的数据类型

2024-01-02 15:56:46

目录

!?

>>>

?:

输入:?

switch:?

快捷键:?

提交Gitee仓库:?

next和nextLine区别:?

注意事项:

循环终止:?

产生随机数:?

比较字符串:

关闭方法:


? ? ? ?和C语言比较像,分为基础类型和引用类型(类似于指针)。基础类型分为8大类,引用类型我们这里先知道String。

? ? ? ? 因为Java的int无论在那个机器上都是4个字节,就增强了可移植性。为了方便,没有像C语言一样分为long和long long类型,只有一个long类型,占据8个字节。

? ? ? ?IDEA编译器会识别很多错误,但是有些是难以发现的,类似于Bug。

? ? ? ?为了区分int和long类型,一般建议long类型变量的初始值后加L(大写易区分)。

long a = 10L;

? ? ? ? 和C语言一样,整数计算时出现小数,需要在其中以数字上加上.0。

? ? ? ? 和C语言小数类型的存储一样,小数没有一个非常精准的数字。?

? ? ? ? double、float类型也遵循IEEE 754标准(详情请看数据的存储(类型的提升)-CSDN博客)。因为Java区分比较明确,所以写float时数据后面一定要加上f,默认小数为double类型。

?? ? ? ? 但是byte b = 10,就不需要进行标识,这是因为,对于byte short小于4字节的类型赋值时,没有超过表示的最大范围的时候,不会被解析为整形。所以对于高字节数据赋给低字节数据,需要强制类型转换。

??? ? ? ? 要是有关联的数据类型,像boolean类型就不能强制转换成其他类型。

? ? ? ? ? 此时我们观察一下代码:

byte f1 = 10;
byte f2 = 20;

byte f3 = f1 + f2;//此时会进行整形提升,转换为4字节

? ? ? ? ? 所以我们要使用int类型接受:?

byte f1 = 10;
byte f2 = 20;

//byte f3 = f1 + f2;//此时会进行整形提升,转换为4字节
int f3 = f1 + f2;

?? ? ? ? 计算机中的字符本质上是一个整数,在C语言中使用ASCII表示字符,而Java中使用Unicode表示字符,因此一个字符占用两个字节,可以表示中文。

?? ? ? ? java中不存在Boolean和int的相互转换,不存在1表示true,0表示false的用法。Java虚拟机规范中,没有明确规定boolean占几个字节,也没有专门来处理boolean的字节码指令,在Oracle中,占一个字节。

?? ? ? ? 将高字节数据赋给低字节数据,需要强制类型转换。

? ? ? ? ?转换类型必须是要是有关联的数据类型,像boolean类型就不能强制转换成其他类型。

? ? ? ? ?java中字符串类型,不是以\0结尾,它不以任何东西结尾,例:String str = “hello”就是以o进行结尾的。在底层存储的就是数组。

? ? ? ? ?字符串的拼接:

? ? ? ? ? 这里有一个短路逻辑,就是如果在遇到字符串之前都是正常运算,遇到字符串之后都是打印,就是+预算符都变成了连接运算符。

? ? ? ? ? 我们来看取模规则(直接上截图):

? ? ? ? ? 对于小数取模,结果为小数。

System.out.println(11.5%2);

? ? ? ? ? 对于分母作为0,则会抛出异常(算数异常)。

? ? ? ? ? 两种不同类型运算最好进行强制转换:

? ? ? ? ? 这里不支持计算完以后得到真假之后继续计算:

? ? ? ? ? 直接报错,但是C可以运行,因为boolean的值不能比较。?

!?

? ? ? ? ? 非只能用于boolean类型。?

>>>

? ? ? ? ?我们知道右移的话会根据最高位符号位去补其他空白位,所以Java中就有了无符号右移,无视最高位符号位,最高位补0。但是没有无符号左移 这个运算符。

?:

? ? ? ? ?我们来观察三目操作符。

public static void main(String[] args) {
    boolean flag1 = true == true ? false ? true : false : true;
    boolean flag2 = flag1;
    System.out.println(flag2);
}

输入:?

? ? ? ? ?Java的输入要利用另外的scanner。

Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();

switch:?

? ? ? ? ?switch只允许三种,整形(int),字符型(char)和字符串(String)(bytechar?和?short类型可以安全转换为int,所以switch(key)的key类型可以为byte、char和short。long和double等类型是不能安全的转换为int,所以key的类型不能为long和double)。

快捷键:?

? ? ? ? ?当我们使用for循环时,可以直接fori,这样可以快速生成for循环。

?? ? ? ? ?当我们想想打印一个值却没有写printf函数,就可以在后面加上.sout来直接生成。

?

? ? ? ? ? ?所以我们在.的时候,提示如果没有想要的语句那么编译会出错。

提交Gitee仓库:?

? ? ? ? ?IDEA可以提交Gitee数据。

next和nextLine区别:?

public class Hello_Java {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你的姓名:");
        String name = scanner.nextLine();
        System.out.println(name);
    }
}

? ? ? ? ?next遇到空格就结束;nextLine会读一整行。?

注意事项:

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);

    System.out.println("输入年龄:");
    int age = scanner.nextInt();
    System.out.println(age);

    System.out.println("输入姓名:");
    String name = scanner.nextLine();
    System.out.println(name);

    System.out.println("输入工资:");
    int salary = scanner.nextInt();
    System.out.println(salary);
}

? ? ? ? ?此时录入name时,因为会有一个回车,就把name赋值为回车了,所以我们要多写一个scanner.nextLine()来把回车消化掉,和C一样。

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);

    System.out.println("输入年龄:");
    int age = scanner.nextInt();
    System.out.println(age);
    
    scanner.nextLine();
    
    System.out.println("输入姓名:");
    String name = scanner.nextLine();
    System.out.println(name);

    System.out.println("输入工资:");
    int salary = scanner.nextInt();
    System.out.println(salary);
}

循环终止:?

? ? ? ? ?是否还记得文件读到EOF终止,scanf读到EOF终止,我们要输入Ctrl + Z来终止输入,Java中我们使用Ctrl + D来终止。

产生随机数:?

? ? ? ? ?随机数是一个类,所以要产生一个对象。

public static void main(String[] args) {
    Random random = new Random();
    int randNum = random.nextInt(100);//[0-100)
    
    
    //不包含100
    Scanner scanner = new Scanner(System.in);
    while(true){
        System.out.println("请输入你要猜的数字:");
        int num = scanner.nextInt();
        if (num > randNum){
            System.out.println("猜大了");
        }
        else if(num < randNum){
            System.out.println("猜小了");
        }
        else{
            System.out.println("猜对了是"+randNum);
            break;
        }
    }
}

? ? ? ? ? 和C语言一样,其实也需要设置种子,但是默认就是时间戳。

比较字符串:

? ? ? ? ?和C语言一样,不能之间比较字符串,需要用到方法(函数)。比较字符串在java中,使用.equals方法。

关闭方法:

? ? ? ? ?记得要关闭方法,这叫做关闭资源。

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    scanner.close();
}

文章来源:https://blog.csdn.net/weixin_64132124/article/details/135309992
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。