首页 > 编程语言 >Java 基本数据类型变量间运算规则

Java 基本数据类型变量间运算规则

时间:2023-03-06 23:33:17浏览次数:39  
标签:Java 运算 int 数据类型 System println 类型 String

在Java程序中,不同的基本数据类型(只有7种,不包含boolean类型)变量的值经常需要进行相互转换。转换的方式有两种:自动类型提升和强制类型转换。

自动类型提升

规则:将取值范围小(或容量小)的类型自动提升为取值范围大(或容量大)的类型 。

基本数据类型的转换规则如图所示:

规则1、当把存储范围小的值(常量值、变量的值、表达式计算的结果值)赋值给了存储范围大的变量时

        int i = 'A';//插入自动转换为 int,其实就是把字符的编码值赋值给变量 i
        double d = 5; //int 自动转换为 double
        long nul = 123456; //nul的值放在 int 也是可以的
        // byte bi = 130; //超过 byte 数据范围了
        long bigNum = 545454545454545L;//数值已经超过int范围,需要加L显示声明 long 类型

规则2、当存储范围小的数据类型与存储范围大的数据类型变量一起混合运算时,会按照其中最大的类型运算

        int n = 1;
        byte b = 4;
        double d1 = 2.1;
        double sum = n + b + d1;//混合运行,转换为 double 进行运算

规则3、当byte,short,char数据类型的变量进行算术运算时,按照int类型处理

        byte b1 = 1;
        byte b2 = 3;
        //byte b3 = b1 + b2; //编译报错,b1 + b2 自动转换为 int
        char c1 = '0';
        char c2 = 'E';
        int c3 = c1 + c2;

        System.out.println(c3);//117

强制类型转换

将3.14 赋值到int 类型变量会发生什么?产生编译失败,肯定无法赋值。

 int pi = 3.14;

想要赋值成功,只有通过强制类型转换,将double 类型强制转换成int 类型才能赋值。

规则:将取值范围大(或容量大)的类型强制转换成取值范围小(或容量小)的类型。

自动类型提升是Java自动执行的,而强制类型转换是自动类型提升的逆运算,需要我们自己手动执行。

转换格式:

数据类型1 变量名 = (数据类型1)被强转数据值;  //()中的数据类型必须<=变量值的数据类型;

规则1、当把存储范围大的值(常量值、变量的值、表达式计算的结果值)强制转换为存储范围小的变量时,可能会损失精度或溢出。

     int pi = (int) 3.14; //损失进度
        double d2 = 4.2;
        int num = (int) d2;//损失精度

        int ii = 200;
        byte b5 = (byte) ii ;//溢出
        System.out.println(b5);//溢出

规则2、当某个值想要提升数据类型时,也可以使用强制类型转换。这种情况的强制类型转换是没有风险的,通常省略。

        int i1 = 1;
        int j = 2;
        double bigger = (double)(i1/j);
        System.out.println(bigger);//0.0

规则3、声明long类型变量时,可以出现省略后缀的情况。float则不同。

        long l1 = 123L;
        long l2 = 123;//如何理解呢? 此时可以看做是int类型的123自动类型提升为long类型

        //long l3 = 123123123123; //报错,因为123123123123超出了int的范围。
        long l4 = 123123123123L;

        //float f1 = 12.3; //报错,因为12.3看做是double,不能自动转换为float类型
        float f2 = 12.3F;
        float f3 = (float) 12.3;

基本数据类型与String的运算

1、字符串类型:String

String不是基本数据类型,属于引用数据类型

使用一对""来表示一个字符串,内部可以包含0个、1个或多个字符。

声明方式与基本数据类型类似。例如:String name = “东方伯”;

2 运算规则

规则1、任意八种基本数据类型的数据与String类型只能进行连接“+”运算,且结果一定也是String类型

        int num11 = 10;
        boolean b111 = true;
        String s1 = "abc";

        String s2 = s1 + num + b1;
        System.out.println(s2);//abc10true

        //String s3 = num + b1 + s1;//编译不通过,因为int类型不能与boolean运算
        String s4 = num + (b1 + s1);//编译通过

规则2、String类型不能通过强制类型()转换,转为其他的类型

        String str = "123";
        //  int num22 = (int)str;//错误的

        int num44 = Integer.parseInt(str);//正确的,后面才能讲到,借助包装类的方法才能转
        System.out.println(num44);

测试1:公安局身份登记

要求填写自己的姓名、年龄、性别、体重、婚姻状况(已婚用true表示,单身用false表示)、联系方式等等。

        String name = "依琳";
        int age = 16;
        char gender = '女';
        double weight = 46.5;
        boolean isMarried = false;
        String phone = "18510000000";

        System.out.println("name = " + name + "\nage = " + age + "\ngender = " +
                gender + "\nweight = " + weight + "\nisMarried = " + isMarried +
                "\nphoneNumber = " + phone);

一些输出测试

       // String str1 = 4;                       //判断对错:
        String str2 = 3.5f + "";               
        System.out.println(str2);              //输出:3.5
        System.out .println(3+4+"Hello!");     //输出:7Hello!
        System.out.println("Hello!"+3+4);      //输出:Hello!34
        System.out.println('a'+1+"Hello!");    //输出:98Hello!
        System.out.println("Hello"+'a'+1);     //输出:Helloa1 

标签:Java,运算,int,数据类型,System,println,类型,String
From: https://www.cnblogs.com/wdh01/p/17132714.html

相关文章

  • 3_Java并发
    Java并发面试题汇总一.多线程基础1.创建线程的三种方式的对比?采用实现Runnable或Callable接口的方式创建多线程优点:可以继承其他类,并且多个线程可以共享同一个targe......
  • 2_Java集合
    Java集合面试题汇总1.常见的集合有哪些?Java的集合类主要由两个根接口Collection和Map派生出来的。Collection:List:代表有序可重复集合,可直接根据元素的索引来访问Se......
  • 1_JavaSE
    JavaSE面试题汇总1.访问修饰符public、private、protected、以及不写(默认)时的区别?public是所有类可见;protected是同一包内及其所有子类可见;默认是同一包内可见;priva......
  • JavaSE——面向对象三大特征之—多态
    多态的形式多态是继封装、继承之后,面向对象的第三大特性。多态是出现在继承或者实现关系中的。多态体现的格式:父类类型变量名=new子类/实现类构造器;变量名.方法......
  • java部分底层原理了解
    Java内存分配其中在JVM虚拟机中jvm的内存分为五个部分:这个只是在JDK之前的JVM内存图在JDK8开始:取消了方法区,增加了元空间,把原来的方法区的多种功能进行拆分,有的功能......
  • java8 分组排序
    //先根据姓名分组再根据分数排序Map<String,List<Student>>map1=listAll.stream().collect(Collectors.groupingBy(Student::getName,HashMap::new,Colle......
  • Java 变量一定要初始化吗?
    1.问题Java中,变量一定要初始化吗?2.解答不一定。a.变量作为局部变量变量作为局部变量时,如果不对其赋值,又要使用它,那就必须得初始化,否则报错。publicclass......
  • Java实验-Swing 网络聊天室
    实验要求:综合Swing界面、多线程和Java的网络通信功能,实现仿QQ聊天:(1)界面设计如下:(2)要求在服务器端利用多线程响应客户端请求;//服务线程(内部类),用于处理客户端的服务线......
  • MongoDB :第三章:MongoDB的数据类型与创建MongoDB数据库
    元数据数据库的信息是存储在集合中。它们使用了系统的命名空间:dbname.system.*在MongoDB数据库中名字空间.system.*是包含多种系统信息的特殊集合(Collection),如下:......
  • 一次Java服务内存过高的分析过程
    现象年前,收到了短信报警,显示A服务的某台机器内存过高,超过80%如上图所示,内存会阶段性增加。奇怪的是,十多台机器中只有这一台有这个问题堆内内存分析最先怀疑是内存泄漏......