Java数据类型与变量

Java 语言概述

Java 是一种优秀的程序设计语言,具有令人赏心悦目的语法和易于理解的语义。有一系列计算机软件和规范形成的技术体系,提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场所。

Java 的注释

Java 中的注释分为以下三种

java 复制代码
单行注释: // 注释内容
多行注释: /* 注释内容 */
文档注释: /** 文档注释 */
  • 多行注释不能嵌套使用
  • 无论是单行还是多行注释,都不参与编译,即编译之后生成的.class文件中不包含注释信息。

标识符

在程序中由用户给类名、方法名或者变量所取的名字

规则

标识符中可以包含:字母、数字以及下划线和$符号等。

不能以数字开头,也不能是关键字,且严格区分大小写。

关键字

关键字是由 Java 语言提前定义好的,有特殊含义的标识符,或者保留字。不能使用关键字定义标识符。如 private、protected、public、abstract、class、eunm、extends 等。

字面常量

常量即程序运行期间,固定不变的量称为常量。

java 复制代码
        System.out.println(123);
        System.out.println("I LOVE JAVA!");
        System.out.println(true);
        System.out.println(false);

字面常量的分类

  • 字符串常量:由""括起来的
  • 整形常量:直接写的没有小数点的数字
  • 浮点数常量:直接写的有小数点的数字
  • 字符常量: 由 '' 括起来的单个字符
  • 布尔常量: true 和 false
  • 空常量: null

数据类型

Java中数据类型分两大类:基本数据类型和引用数据类型。其中基本数据类型分四类八种:

  • 四类:整型、浮点型、字符型、布尔型
  • 八种:

需要注意的是,在 Java 中,整型和浮点型都是有符号的。且整型默认为 int , 浮点型默认为 double 。

引用数据类型将在后面的文章中介绍。

变量

对于经常改变的内容(如分数、体重)在 Java 中称为变量,数据类型就是用来定义不同种类变量的。

语法格式

java 复制代码
数据类型 变量名 = 初始值;

整型变量

java 复制代码
int a = 100;
System.out.println(a);

在给 int 类型设置初始值时,不能超过 int 类型的表示范围

java 复制代码
 int b = 999999999999999;

使用变量前一定要赋值,int 的包装类为 Integer

java 复制代码
System.out.println(Integer.MAX_VALUE);// int 类型的最大值
System.out.println(Integer.MIN_VALUE);// int 类型的最小值

长整型变量

java 复制代码
long a = 100L;
System.out.println(a);

长整型变量的初始值后加l或L,推荐加 L

java 复制代码
System.out.println(Long.MAX_VALUE);
System.out.println(Long.MIN_VALUE);

无论在多少位系统,long类型的大小是 8 个字节,Long 是 long 类型的包装类。


短整型变量

java 复制代码
short a = 10;
System.out.println(a);
System.out.println(Short.MAX_VALUE); // short 类型的最大值
System.out.println(Short.MIN_VALUE); // short 类型的最小值

无论在多少位系统下 short 类型所占空间都是 2 个字节,Short 是 short 的包装类。


字节型变量

java 复制代码
byte a = 10;
System.out.println(a);
System.out.println(Byte.MAX_VALUE);// byte 类型的最大值
System.out.println(Byte.MIN_VALUE); // byte 类型的最小值

无论在多少位系统下 byte 类型所占空间都是 1 个字节,Byte 是 byte 的包装类。


浮点型变量

双精度浮点型

java 复制代码
//Java 中浮点数在内存中的存储也遵循 IEEE 754
        double d = 3.14;
        System.out.println(d);
// double 在任何系统下都占 8 个字节
        System.out.println(Double.MAX_VALUE); // double 类型的最大值
        System.out.println(Double.MIN_VALUE); // double 类型的最小值

double 在任何系统下都占 8 个字节,Double 是 double 的包装类。

java 复制代码
double num = 1.1;
System.out.println(num * num);

Java 中浮点数在内存中的存储也遵循 IEEE 754,避免不了精度误差。


单精度浮点型

java 复制代码
float num = 3.14f;// 使用 float 赋值必须加 f 或 F
System.out.println(num);
System.out.println(Float.MAX_VALUE);//  float 的最大值
System.out.println(Float.MIN_VALUE);// float 的最小值

float 类型在 Java 中占四个字节,由于表示的数据范围较小,一般用到浮点数都是用 double。

Float 是 float 的包装类。

字符型变量

java 复制代码
char c1 = 'A';
char c2 = '1';
// Java 采用的是 Unicode 字符集,一个字符占用两个字节,可以表示更多字符包括中文
char c3 = '哈';
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);

Java 中采用 '' + 单个字符表示字符字面值。Java 采用的是 Unicode 字符集,一个字符占用两个字节,可以表示更多字符包括中文。char 类型的包装类是 Character。

布尔型变量

布尔类型用来表示真假

java 复制代码
boolean a = true;
boolean b = false;
System.out.println(a);
System.out.println(b);

Java 中没有 0 为假,非 0 为真这种说法,boolean 类型的包装类为 Boolean 。Java 虚拟机规范中,并没有明确规定 boolean 占几个字节,也没有专门用来处理 boolean 字节码的指令,在 Oracle 公司的虚拟机实现中,boolean 占一个字节。

类型转换

Java 是强类型编程语言,不同类型之间的变量相互赋值时,会有严格的校验。

java 复制代码
int a = 10;
long b = 100L;
// 大的数据类型不能直接赋值给小的数据类型
a = b;

自动类型转换

代码不经过任何处理,编译时编译器会自动处理,数据范围小的转为数据范围大的时会自动进行。

java 复制代码
int a = 10;
short b = 20;
// 小的数据类型可以赋值给大的数据类型
a = b;
System.out.println(a);

强制类型转换

代码需经过一定处理,数据范围大的到数据范围小的需手动处理。

java 复制代码
        int a = 10;
        long b = 100L;
        a = (int)b;
        System.out.println(a);

强制类型转换会存在精度丢失

java 复制代码
        int a = 128;
        byte b = 0;
        b = (byte) a;
        System.out.println(b);

这里 byte 类型的取值范围是 -128 ~ 127 , a 强转为 byte 类型时, 发生截断,存进来的就是 1000 0000 这是规定的 -128 的表示形式。


不相干的数据类型不能转换

java 复制代码
boolean a = true;
int b = (int) a;

类型提升

不同类型的数据之间相互运算时,数据类型小的会被提升到数据类型大的。

  • int 和 long 之间:int 会提升为 long
java 复制代码
        int a = 10;
        long b = 100L;
        int c = a + b;

  • byte 和 byte 运算会自动提升为 int
java 复制代码
        byte a = 10;
        byte b = 20;
        byte c = a + b;

由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据,诸如 byte 和 short 这种低于 4 个字节的类型,会先提升成 int 再参与计算。

引用数据类型将在后面的文章介绍。

相关推荐
斯维赤1 小时前
Spring AI | Function Calling 是什么?
java·后端
devpotato1 小时前
限流、熔断、降级:三者核心区别一文讲清
java
shehuiyuelaiyuehao1 小时前
算法47,分治快排,第K大
java
程序猫.1 小时前
算法刷题笔记:模拟题从入门到实战(含 LeetCode 例题与习题)
java·数据结构·算法
Wang's Blog1 小时前
Java 服务器: Linux-MySQL的rpm安装与初始化配置
java·服务器
IT枫斗者枫哥1 小时前
Spring Boot Excel 导入实战:把“导入失败”改成逐行错误报告
java·spring boot
殷紫川1 小时前
Java 27 九大核心特性解析与实战
java
小白学大数据1 小时前
Python 项目实战:用 Flask 构建生产级 MySQL 增删改查 REST API
开发语言·人工智能·python·mysql·flask
用户094248568031 小时前
第11章:OpenJDK反射、动态代理与 MethodHandle 初探
java·jvm