JavaSE变量 常量和数据类型转化

发布时间:2024年01月22日

变量 常量和数据类型转换

变量与常量

在Java程序运行中中,我们把固定不变的的量,叫做常量,随着程序运行发生变化的量叫做变量。比如之前打印的hello word在程序运行时不会发生改变所以是常量。像一个人的你年龄会随着时间的变化而变化就是变量

变量

在Java程序中,对于经常改变的内容称为变量而数据类型就是用来定义不同种类变量的

作用: 一次接受一个数据,将来定义一个变量,接受一个值,后续可能根据不同的情况对此值进行修改,此时就可以用变量。

语法格式

变量的语法格式为:
数据类型 变量名 = 初始值;

整型变量

基本语法格式
int 变量名 = 初始值;
示例:

public test class{
    public static void main(String[] args)
    {
        int a =89;  //初始化变量并对a进行赋值
        System.out.println(a);
    }
}

注意事项:

  1. int 表示变量的类型是一个整型。
  2. 变量名的变量的表示名,后续通过这个给变量设置初始值。
  3. Java中的=表示赋值的意思,并不是数学中的等于。
  4. 初始化的操作是可有可无的,但建议创建变量时显示初始化。
  5. // /**/ 都表示注释,注释内容不参与编译。
  6. 一句话说完要在结尾处加上分号,否则会导致编译失败。

在Java中一个int占4个字节,无论是32位操作系统还是64位操作系统。 int 的数据范围是: -2147483648 ~ +2147483647

public test void{
    public static void main(String[] args)
    {
        System.out.println(Integer.MAX_VALUE);
        System.out.println(Integer.MIN_VALUE);
    }  //显示int 最大范围和最小范围
}

如果运算的数据超出int最大范围,我们需要考虑用long(长整型)防止溢出。

长整型

基本语法格式:
long 变量名 = 初始值
示例:

publi test void{
    public static void main (String[] args)
    {
        lnog a =100000L;
        System.out.println(a);
    }
}

注意事项:

基本语法格式和创建 int 变量基本一致, 只是把类型修改成 long

在Java中long类型的范围是:-9223372036854775808 ~ +9223372036854775807

public test class{
    public static void main(String[] args)
    {
        System.out.println(Long.MAX_VALUE);
        System.out.println(Long.MIN_VALUE);
    }  //查看long的的最大最小范围
}
短整形

基本语法格式:
short 变量名 = 初始值;
short 只占用2个字节范围是 -32768 -> +32767

双精度浮点型变量

基本语法格式:
double 变量名 = 初始值
代码示例1:

public test class{
    public static void main(String[] args)
    {
        double a =3.14; //初始化双精度浮点类型的变量
        System.out.println(a); 
    }
}

代码示例2:

public test class{
    public static void main(String[] args)
    {
        int a = 1;
        int b = 2;
        System.out.println(a/b)  
    }
}

在 Java 中, int 除以 int 的值仍然是 int(会直接舍弃小数部分)。如果想得到 0.5, 需要使用 double 类型计算。

public test class{
    public static main void {
        double a = 1;
        double b = 2;
        System.out.println(a/b);
    } //使用double类型是进行计算结果是0.5  
}

值得注意的是double类型存在一定的误差。无法精确的打印浮点数。

public class test {
    public static void main (String[] args)
    {
        double a;
        a = 89.1234567890505659456678;
        System.out.println(a);
    }
}    //打印的结果是89.12345678905056
单精度浮点数

基本格式:
float 变量名 = 初始值;
代码示例:

public class test {
    public static void main(String[] args)
    {
        float a = 3.2f; //写F或者f都可以
        System.out.printn(a);
    }
}

由于float类型在Java中只占四个字节,同时表示的数据精确范围较小,在编写工程文件时优先考虑使用double 类型

字符类型的常量

基本语法格式:
char 变量名 = 初始值;
代码示例:

public test class{
    public static void main(String[] args)
    {
        char t = 'A';
        char y = '牛';  //使用一个字符表示汉字
        System.out.println(t);
        System.out.println(y);
    }
}
  1. 在Java中使用单引号+单个字母 的形式表示字符字面值。

  2. 计算机中的字符本质上是一个整数,在C语言中使用ASCII表示字符,而Java中使用Unicode表示字符,因此一个字符占用两个字节,表示的字符种类更多,也包括中文。

    javac -encoding UTF-8 Test.java

字符串类型变量

字符串就是将字符组装到一起。
基本语法:
String 变量名 = "初始值";

public class test{
    public static void main (String[] args)
    {
        String  name = "KeLi"; 
        System.out.println(name);
    }
}

注意事项:

  1. String类型并不是基本数据类型,是对象类型
  2. Java 使用 双引号 + 若干字符 的方式表示字符串字面值。
  3. 当字符串中出现不方便直接表示的字符需要使用转义字符/
字节变量

基本语法
byte 变量名 = 初始值;
代码示例;

public test class{
    public static void main (String[] args)
    {
        short value 0;
        System.out.println(value);
    }
}

short占用2个字节,数据范围时; -32768 -> +32767

布尔类型的变量

与其他数值类型相比布尔类型(boolean)并不是用来储存数字的,它更是一种状态分为:

true 真
false 假

注意事项:

  1. 布尔类型的变量只有两种取值,true(真)和false(假)。
  2. 在Java中boolean类型与int类型不能互换,不存在1表示true(真)和false(假)
    布尔类型的变量主要和后面的流程控制语句配合使用。

标识符

概述: 标识符就是给类、方法、变量取名字的

1.概述:咱们给类,方法,变量取的名字
2.注意:
  a.硬性规定(必须遵守)
    标识符可以包含"英文字母","数字","$和_"
    标识符不能以数字开头  int i1 = 100(正确)  int 1i = 100(错误)
    标识符不能是关键字  int static = 100(错误)   int public = 100(错误)
      
  b.软性建议(可遵守可不遵守,但是建议遵守)
    给类取名字:遵循大驼峰式 -> 每个单词首字母大写
    给方法和变量取名字:遵循小驼峰式 -> 从第二个单词开始往后首字母大写

驼峰命名法是一种编程命名规范,也被称为驼峰式命名法(CamelCase)。根据这个规范,变量名、函数名和类名都应使用有意义的名称。遵循以下规则:

  1. 每个单词的首字母大写,除了第一个单词的首字母。
  2. 每个单词之间没有空格或下划线。
    示例:

变量名:myVariable, age, firstName, lastName
函数名:calculateTotal, getName, isValidEmail
类名:Car, Calculator, Student
驼峰命名法在一定程度上提高了代码的阅读性。

常量

在第一个Java程序中System.out.println(“hello word”); 中的hello word就是常量。常量即程序运行期间,固定不变的量称为常量,像一天有24个小时,一小时20分钟。

public test class {
    public static void main(String[] args);
    {
        System.out.println("hello word");
        System.out.println(1000);
        System.out.println(3.1415926);
        System.out.println("A");
        System.out.println(false);
        System.out.println(true);

    }
}

ps: 100、3.14、‘A’、true/false都是常量,将其称为字面常量。
字面常量的分类:

  1. 字符串常量:由""括起来的,比如“12345”、“hello”、“你好”。
  2. 整形常量:程序中直接写的数字(注意没有小数点),比如:100、1000
  3. 浮点数常量:程序中直接写的小数,比如:3.14、0.49
  4. 字符常量:由 单引号 括起来的当个字符,比如:‘A’、‘1’
  5. 布尔常量:只有两种true和false
  6. 空常量:null(后面了讲)
    字符串、整形、浮点型、字符型以及布尔型,在Java中都称为数据类型。在后面数据类型进行详解。

字面常量与常量的区别:

  1. 类型不同:常量是指用关键字final修饰的变量,其值只能赋值一次并且不能再改变,可以是任何合法的Java表达式。字面常量是直接写入程序代码中的值,它们不需要存储在变量中就可以被使用。
  2. 声明方式不同:常量需要先声明并初始化,例如:final int MAX_VALUE = 100;。字面常量可以直接在代码中使用,例如:sum = a + 10;。
  3. 作用范围不同:常量在所属的作用域内有效,可以在类、方法或者代码块中定义。字面常量只有在使用的地方有效
  4. 使用方式不同:常量通常用于存储不变的值,例如数学常数、配置信息等。字面常量用于直接代表某个值,例如整数、浮点数、字符串等
final 关键字修饰的常量
public class test{
    public static void main (String[] args)
    {
        final int a =  8;  //final 在语法上将a从变量定义为常量
        a = 4;  //编译出错,Idea会提示无法为最终变量a分配值
        System.out.println(a);
    }
}

数据类型

在日常生活中的数据类型分别为小数、整数、负数等。在Java程序中主要分为基本数据类型引用数据类型
基本的数据类型分为四类八种

在这里插入图片描述

四类:整形 浮点型 字符型 布尔型
八种: 字节型 短整型 整形 长整型 单精度浮点数 双精度浮点数 字符型 布尔型
需要注意的是:

  • 无论是16位系统还是32位系统,int都只占用4个字节,long都只占用8个字节
  • 整形和浮点形都是带符号的
  • 整形默认是int,浮点型默认是double
  • 字符串属于引用类型

数据类型转换

什么时候发生数据转换:

  • 1、等号左右两边类型不一致
  • 2、不同的数据类型作运算

数据类型转换可以分为:

  • 自动类型转换
  • 强制类型转

基本数据类型从小到大排序、

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

自动转换类型(隐式类型转换)

将取值范围小的数据类型赋值给取值范围大的数据类型 -> 小自动转大; 取值范围小的数据类型和取值范围大的数据类型数据做运算 -> 小自动转大。

System.Out.println(1024); // 整型默认情况下是int
System.Out.println(3.14); // 浮点型默认情况下是double
int a = 100;
long b = 10L;
b = a; // a和b都是整形,a的范围小,b的范围大,当将a赋值给b时,编译器会自动将a提升为long类型,然后赋值
a = b; // 编译报错,long的范围比int范围大,会有数据丢失,不安全
float f = 3.14F;
double d = 5.12;
d = f; // 编译器会将f转换为double,然后进行赋值
f = d; // double表示数据范围大,直接将float交给double会有数据丢失,不安全
byte b1 = 100; // 编译通过,100没有超过byte的范围,编译器隐式将100转换为byte
byte b2 = 257; // 编译失败,257超过了byte的数据范围,有数据丢失
强制类型转换(显示类型转换)

当将取值范围大的数据类型赋值给取值范围小的的数据类型 -> 据需要强制转换

强制类型转换格式:

取值范围小的数据类型  变量名 = (取值范围小的数据类型)取值范围大的数据类型
eg:
int i = (int)9.2;
int a = 10;
long b = 100L;
b = a; // int-->long,数据范围由小到大,隐式转换
a = (int)b; // long-->int, 数据范围由大到小,需要强转,否则编译失败
float f = 3.14F;
double d = 5.12;
d = f; // float-->double,数据范围由小到大,隐式转换
f = (float)d; // double-->float, 数据范围由大到小,需要强转,否则编译失败
a = d; // 报错,类型不兼容
a = (int)d; // int没有double表示的数据范围大,需要强转,小数点之后全部丢弃
byte b1 = 100; // 100默认为int,没有超过byte范围,隐式转换
byte b2 = (byte)257; // 257默认为int,超过byte范围,需要显示转换,否则报错
boolean flag = true;
a = flag; // 编译失败:类型不兼容
flag = a; // 编译失败:类型不兼容

需要注意的是:

  1. 不要随意对数据进行请强制转换,会出现损失精度及数据溢出的现象除非没有办法
  2. byte,short定义的时候如果等号右边是整数常量,如果不超出byte和short的范围,不需要我们自己强转,jvm自动转型 ;byte,short如果等号右边有变量参与,byte和short自动提升为int,然后结果再次赋值给byte或者short的变量,需要我们自己手动强转
  3. char 类型的数据如果参与运算会自动提升int类型 ,可在ASCII码表中找到对应int值与字符,若没有可在unicode码表中找到
  4. 强制类型转换不一定能成功,不相干的类型不能互相转换

在这里插入图片描述

总结

在这里插入图片描述

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