Java--数据类型转换、溢出问题

标识符

类名、变量名以及方法名都被称为标识符。
不可以使用关键字作为变量名、方法名
大小写敏感
以字母、$、_ 开始命名

语言类型
强类型语言
要求变量先定义后使用
弱类型语言
数据类型能够被忽略的语言

数据类型

基本类型(primitive type)
基本数据类型:整型、浮点型、字符型、布尔型
整数类型 —— byte、short、int、long
浮点类型 —— float、double
字符类型 —— char
布尔类型 —— boolean
eg:特殊标识

long num1 = 30L;
float num2 = 30.1F;
引用类型(interface type)
引用数据类型:接口(interface)、数组([ ])、类(class)

数据类型拓展

public class Demo1 {
    
    
    public static void main(String[] args) {
    
    
//整数拓展: 进制  二进制 0b  八进制 0   十进制    十六进制 0x

        int a1 = 10;              //十进制
        int a2 = 0b10;            //二进制
        int a3 = 010;             //八进制
        int a4 = 0x10;            //十六进制

        System.out.println(a1);   // 输出10
        System.out.println(a2);   // 输出2
        System.out.println(a3);   // 输出8
        System.out.println(a4);   // 输出16
//浮点数拓展  float double (最好完全避免使用浮点数进行比较)
/*  有限的 有误差 接近但不等于
   如果有银行业务表示 使用数学工具类 BigDecimal
 */

        float b1 = 0.1f;
        double b2 = 1.0/10;
        double b3 = 1/10;
        System.out.println(b1);  //输出0.1
        System.out.println(b2);  //0.1
        System.out.println(b3);  //0.0  先按照整型数运算,所以运算结果是整型数0,而结果要求是double,则将0转换为double类型0.0
        System.out.println(b1==b2);//false
        float c1 = 999999999999f;
        float c2 = 1+c1;
        System.out.println(c1==c2); //true

//字符拓展  所有字符的本质还是数字
//编码: Unicode   范围 U0000~UFFFF
        char d1 = 'a';
        char d2 = '聪';
        char d3 = '\u0069';
        System.out.println(d1);     //输出a
        System.out.println((int)d1);  //97 (强制转换int型)
        System.out.println(d2);       //聪
        System.out.println((int)d2); //32874
        System.out.println(d3);   //i
    }
}

类型转换

由于Java是强类型语言,所以要进行有些类型转换
由低到高 byte,short,char->int->long->float->double(注意:小数的优先级一定大于整数)
强制转换 (类型)变量名
高–低

int i =128byte =(byte)i;//内存溢出  范围-128~127
System.out.println(e2);//输出-128
//强制转换丢失精度
System.out.println((int)9.8);//输出9
System.out.println((int)56.23f);//输出56

溢出问题

int money = 10_0000_0000;
int year = 200;
long total = year*money;//默认是int
System.out.println(total);//溢出错误
long total1 =(long)money*year;
System.out.println(total1);//计算正确

自动转换 低–高,系统自动执行

变量作用域
类变量
实例变量
局域变量

扫描二维码关注公众号,回复: 15184204 查看本文章
public class Demo2 {
    
    
    static int a = 32; //类变量
    int b = 32;//实例变量,全局变量

    public static void main(String[] args) {
    
    
        int c = 32;//局部变量
        System.out.println(a);//类变量直接输出
        Demo2 demo2 = new Demo2();
        System.out.println(demo2.b);//全局变量 new一个对象 引用输出
        System.out.println(c);//局部变量 只能在这个方法里面 直接输出
    }

}

命名规范
变量:首字母小写,驼峰原则
常量:大写字母,下划线
类名:首字母大写,驼峰原则
方法名:首字母小写,驼峰原则

运算

向上兼容
byte short int 互相运算后,最后是int;
如果操作数里有long,最后是long;
如果操作数里有float,最后是float;

自增

        int d =1;
        int e =d++; //先赋值 再自增  e=1 d=2
        int f =++d;//先自增 再赋值  d=3 f=3
        System.out.println(d);//输出3
        System.out.println(e);//输出1
        System.out.println(f);//输出3
i++ 先赋值 后自增
++i 先自增 后赋值

位运算
效率高 与底层打交道 主要用来对操作数二进制的位进行运算
左移<<
右移>>

  /*
    <<  *2
    >>  /2
    2*8 = 16  2*2^3
     */
    System.out.println(2<<3);

字符串连接

int z =10;
int x =20;
System.out.println(“”+z+x); //输出1020
System.out.println(z+x+“”);//输出30

包机制

为了更好地组织类,Java提供了包机制,用于区别类名的命名空间
格式:

package pak1.pak2;

一般利用公司域名倒置作为包名;
比如百度 www.baidu.com 包名为com.baidu.www
为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包,用import语句完成此功能。

猜你喜欢

转载自blog.csdn.net/m0_52822058/article/details/127562220
今日推荐