ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Day02数据类型

2021-11-29 12:03:03  阅读:128  来源: 互联网

标签:String int Day02 数据类型 System long println out


数据类型

强类型语言

​ 要求变量的使用严格符合规范,所有变量都必须先定义后才能使用

优点:更安全,但是相对比较慢

public class Day02 {
    public static void main(String[] args) {
    //必须有初值(强类型语言要求)
        String a;
        int b;
        System.out.println(a);
    }
}

弱类型语言

​ 要求变量的使用严格符合规范,eg:JS,VB

优点:速度快,但是相对慢

JAVA的数据类型分为两大类

基本类型(primitive type)
在这里插入图片描述

引用类型(Reference Type)

  • 接口
  • 数组
import com.sun.management.VMOption;

/**
 * @author gaochuang
 * @version 1.0
 */
public class Day02 {
    public static void main(String[] args) {
        //必须有初值(强类型语言要求)
        //        String a;
        //        int b;
        //        System.out.println(a);
        // 整数扩展 :进制   二进制0b    十进制       八进制0      十六进制0x
        int i=10;//正常的十进制
        int i2=010;//八进制的 ” 10“
        int i3=0x10;//十六进制的   “10”
        System.out.println(i);
        System.out.println(i2);
        System.out.println(i3);

        System.out.println("============================================");
        //====================================================
        //浮点数扩展
        //最好不要使用浮点数进行比较
        //BigDecimal  数学工具类
        //================================================
        //最好不要使用浮点数进行比较
        //最好不要使用浮点数进行比较
        //最好不要使用浮点数进行比较
        //float 有限的 离散的 数据类型,具有舍入误差,大约的接近的但是不等于
        //double

        float f=0.1f;//eg:0.1232658545454  但是最后只显示0.1(大约0.1,便于理解)
        double d=1.0/10;//0.1
        System.out.println(f==d);//false  所以f!=d

        float d1=2323232323f;//2.3232323.....最后只显示大约只显示2.3
        float d2=d1+1;
        System.out.println(d2);
        System.out.println(d1==d2);//true  具有舍入误差性 相当于在23232323后面加上个1,太小了  所以舍去了,要是加上个10000000,就不一样了

        //============================================
        //字符扩展
        //============================================
        System.out.println("============================================");
        char c1='A';
        char c2='中';//注意字符要用单引号,字符串要用双引号
        System.out.println(c1);
        System.out.println((int)c1);//强制转换
        System.out.println(c2);
        System.out.println((int)c2);//强制转换
        System.out.println("=======================================");
        //所有字符串的本质还是数字,Unicode表:(a=97, A=65)
        char c3='\u0061';
        //       '\u0061'  第一个是转义字符     0061代表a   在Unicode表中可知
        //\t表示制表
        //\n表示换行
        System.out.println(c3);
        System.out.println("=======================================");
        //=================================================
        //从对象  从内存分析
        String sa=new String("Hello World");
        String sb=new String("Hello World");
        System.out.println(sa==sb);

        String sc="Hello World";
        String sd="Hello World";
        System.out.println(sc==sd);

        //布尔值扩展
        boolean flag=true;
        if (flag==true){}//新手
        if (flag){}//老手  这两个相等  意思一样
    }
}

类型转换

  • 由于Java是强类型的语言,所以要进行运算的时候,需要类型转换

    低 --------------------------------------------------------------------------------------高

    byte,short,char->int->long->float->double

    小数的优先级大于整数

  • 运算中,不同类型的数据先转化为同一类型的,然后在进行运算

    自然强制类型(由高向低转型,需要强制转换eg:(转换类型)变量名 )

    /**
     * @author gaochuang
     * @version 1.0
     */
    public class Day02typeConversion {
        public static void main(String[] args) {
            //byte,short,char->int->long->float->double
    
            /*
            注意点:
            1.不能将布尔型进行比较
            2.不能把对象转化成不相干的类型
            3.在把高容量向低容量进行转换的时候,会出现内存溢出,或者精度问题
            * */
            int i=500;
            byte b=(byte)i;// 从高到低的强制转换,导致内存溢出
            System.out.println(i);
            System.out.println(b);
            
            System.out.println("===========================================");
            System.out.println((int)23.27);//小数点后面的数丢失  精度问题
            System.out.println((int)-23.1f);
            
            
            //操作较大的数时候,容易出现,内存溢出的现象
            //JDK7的新特性,数字之间可以用下划线来区分
            int money=10_0000_0000;
            int year=20;
            int total=year*money;
            long total1=year*money;
            //最后运行是-1474836480,原因是超过int字节的最大值,导致内存溢出,
            System.out.println(total);
            System.out.println(total1);//运行的也是-1474836480,是因为 计算好之后,把值存放在long类型中
            //解决方法就是,将year强制转换成long类型就行,转换一个就行
            long total2=(long)year*money;
            System.out.println(total2);//最后成功
        
            
        }
    }
    
    

    自动类型转换

    public class Day02typeConversion {
        public static void main(String[] args) {
            //byte,short,char->int->long->float->double
            int x=500;
            long y=(long)x;
            System.out.println(y);
        }
    }
    

static void main(String[] args) {
//byte,short,char->int->long->float->double
int x=500;
long y=(long)x;
System.out.println(y);
}
}




标签:String,int,Day02,数据类型,System,long,println,out
来源: https://blog.csdn.net/weixin_45648789/article/details/121600583

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有