【JavaSE】03-变量、常量、数据类型

①.变量

  • 强类型语言:变量的使用严格符合规定,所有变量都必须先定义后才能使用。
    安全性高,但速度相对较慢
  • 弱类型语言:对变量的使用不是很严格。
    安全性相对较低,但速度快

变量的定义:

  • 本质上是内存中的一块存储空间,这块空间有 数据类型、变量名、字面值
    变量是内存中存储数据的最基本的单元。
  • 声明格式
    数据类型 变量名 (= 字面值);
    变量必须先声明在赋值,才可以访问。
  • 作用域:变量的有效范围
    “出了大括号就失效了 ”
    在不同作用域当中,变量名可以重名
  • 分类
    类变量:写在类当中的变量 需要static关键字
    局部变量:在方法体当中声明的变量
    成员变量:在方法体外(类体中)声明的变量

变量的表数范围:

byte一字节——-27~27-1
short二字节——-215~215-1
int四字节——-231~231-1
long八字节——-263~263-1
float:-3.403E38~3.408E38【七位有效数字】
double:-1.798E308~1.798E308【十五位有效数字】

public class VarTest {
    public static void main(String[] args){
        //变量必须先定义再使用
        String name = "iFinder";
        System.out.println(name);

        //byte范围-128~127 一字节
        //byte b1 = 257; //不兼容的类型: 从int转换到byte可能会有损失  超过表数范围就会报错
        byte b = 10;

        //short范围 -32768~32767 二字节
        //short s1 = 256256;    不兼容的类型: 从int转换到short可能会有损失
        short s = 256;

        //int范围 -2147483648~2147483647 四字节
        //int i1 = 25256256256;  整数太大
        int i = 256256256;

        long l = 256256256;

        //声明float字面值后要加注“F/f”  否则报错:不兼容的类型: 从double转换到float可能会有损失
        //float f = 12.3652;
        float f = 12.3652f;
        double d = 12.3652;

        //String类型声明时字面值要写在""当中   不兼容的类型: int无法转换为java.lang.String
        //String S = 123;
        String S = "123";

        char c = 1;   //值为1的字符的值 
        char c2 = '1';  //字符 1 
        System.out.println(c);  //
        System.out.println(c2);  //1
    }
}

②.变量拓展知识

不同的进制

二进制:0b10 —— 2 用0b开头
十进制:10 —— 10 正常开头
八进制:010 —— 8 用0开头
十六进制:0x10 —— 16 用0x开头

浮点数据注意

  • 浮点数的表述范围是有限的、离散的,存在一定的误差
  • 在做数据比较的时候要尽量的避免使用浮点类型的数据
  • 如果需要进行大数比较则需要使用BigDecimal这一类数学工具

字符型注意

  • 字符型的字面值可以为 ‘a’ ‘请’······等等,也可以为表数范围内的数字,但是表示的内容不一样
  • Java支持Unicode字符集,0~65535是Unicode的表数范围,Unicode占2字节
  • ‘a’ = 97 ‘A’ = 65

转义字符

\t——制表符tab
\n——换行符
\——转义\本身
\”——转义"
更多请看大佬博客

public class VarAdvancedTest {
    public static void main(String[] args){

        //不同进制的开头  二进制0b  十进制  八进制0 十六进制0x
        int i1 = 0b10;  //二进制   2
        int i2 = 10;    //十进制   10
        int i3 = 010;   //八进制   8
        int i4 = 0x10;  //十六进制  16   0~9 A~F

        System.out.println(i1);    //  2
        System.out.println(i2);    //  10
        System.out.println(i3);    //  8
        System.out.println(i4);    //  16

        System.out.println("=======================================");
        //浮点数拓展,注意!!!!!
        //float与double计算数据是不准确的!!!
        float f1 = 0.1f;
        double f2 = 1.0/10;
        System.out.println(f1 == f2);   //输出false

        float f3 = 233333333333f;
        float f4 = f3 + 1;
        System.out.println(f3 == f4);   //输出true
        //原因,浮点数的表数范围是有限的离散的,有误差的
        //最好完全避免使用浮点数进行数据大小的比较

        //如果需要进行大数比较需要使用BigDecimal这一类数学工具做大数比较

        System.out.println("======================================");
        //字符串类型拓展
        char c1 = 'a';
        char c2 = '铨';
        System.out.println(c1);      // 输出 a
        System.out.println(c2);      // 输出 铨
        System.out.println((int)c1); // 输出 97
        System.out.println((int)c2); // 输出 38120
        //java通过支持Unicode来进行编码
        //a = 97 A = 65 ;Unicode表数范围2字节 0~65535
        //Unicode 一般表示
    }
}

③.常量

常量 Constant:初始化initialize之后不能再改变值,是不会变动的值。
其实是一种特殊的变量,一旦被设定,在程序运行的过程中就不允许修改
命名:常量名一般使用大写字母

声明方法:
final 常量名 = 字面值;
如:
final double PI = 3.1415925;

④.数据类型

定义

  • 定义:不同的数据有不同的数据类型,用于指导内存应该分配多大的内存空间。
    变量中存储的数据必须和变量的数据类型一致,否则编译时就会报错。
    数据类型的分类
  • 数据类型主要分两大类:
    1.基本数据类型(8个):
    byte、short、int、long、float、double、boolean、char
    2.引用数据类型:
    数组、类、接口、枚举、标注

强制类型转换

  • 格式:(类型)变量名
  • “从高到低的转换”
    注意:
    1.不能对布尔值进行转换
    2.不能转换为不相干的类型
    3.高容量转换为低容量的时候,需要强制转换
    4.转换时可能会导致内存溢出,或是丢失数据精度

常见问题
1.操纵比较大的数时注意数据溢出问题。

自动类型转换

  • 定义:当Java中小容量变量向大容量变量转换时,jdk会自动进行类型转换。
    转换条件:1.两种数据类型彼此兼容。 2.目标类型范围大于当前类型范围
    自动类型转换顺序:
    数值型数据的转换:byte→short→int→long→float→double。
    字符型转换为整型:char→int。
public class VarBigNum {
    public static void main(String[] args) {
        //操作大数的时候,注意数据溢出问题
        //JDK7的新特性,大数据可以用下划线隔开,方便计数
        int money = 10_0000_0000;
        int years = 25;
        int total1 = money*years;
        System.out.println(total1);   //输出:-769803776  数据已经溢出

        long total2 = money*years;
        System.out.println(total2);   //输出:-769803776  因为在类型转换之前,就已经存在问题

        long total3 = ((long)money)*years;
        System.out.println(total3);   //输出:25000000000  先将一个数据转换为long,之后进行强制类型转换
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值