Java数据类型与变量

简介: Java数据类型与变量

字面常量

字面常量的分类:


1.字符串常量:如"hello"、“world”、“123”、“晚安”。

2.整型常量:与C语言中的整型是一个意思,即就是一个整数,如100、200、666。

3.浮点数常量:就是小数,如3.14、3.15、5.13。

4.字符常量:由单引号引起来的字符。如:‘A’、‘1’。

5.布尔常量:布尔常量就只有两种,即true和false。

6.空常量:null。


在Java中,字符串、整型、浮点型、字符型以及布尔型,都称为数据类型。


数据类型

Java数据结构分为两类:基本数据结构和引用数据结构。

基本数据类型一共4类,8种:


4类:整型、浮点型、字符型、布尔型。

8种:字节型、短整型、整型、长整型、单精度浮点数、双精度浮点数、字符型、布尔型。


数据类型 关键字 内存占用 范围
字节型 byte 1字节 -128~127
短整型 short 2字节 -32768~32767
整型 int 4字节 -2^31 ~ 2^31-1
长整型 long 8字节 -2^61 ~ 2^61
单精度浮点数 float 4字节 有范围,但不需要关注
双精度浮点数 double 8字节 有范围,但不需要关注
字符型 char 2字节 0~65535
布尔型 boolean 没有明确范围 true和false


需要注意的是:


  • 无论是在32为平台还是在64位平台,int都是占用4个字节,long都占8个字节。
  • 整型和浮点型都是带有符号的。
  • 整型默认为int,浮点型默认为double。
  • 1KB=1024Byte,而一个Byte包括8个比特位。

变量

变量嘛,当然就是可以变得东西喽,对于那些可以经常改变的变量,在Java程序种称之为变量,而数据类型就是用来定义不同种类的变量的。


定义变量的语法格式:


数据类型 变量名=初始值;


比如:


int a=10;//a就是变量名,类型为整型,也可以把a称之为标识符,该变量a中放置的值为10。
 int a=10;
        double b=20;
        float c=20;
        char d='A';
        boolean e=true;
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);
        System.out.println(e);

1.png


整型变量

这是整型变量的定义:


int a=10;
 System.out.println(a);

注意,请看我这样定义一个整型变量可不可以呢?


int a;
 System.out.println(a);

答案是否定的,在Java中,当一个局部变量(定义在方法中的变量)没有被初始化(即被赋为初值)时,那么这个变量是不允许被使用的,是不能够通过编译的。


我们看看int类型在Java中可以表示的数的范围:


System.out.println(Integer.MAX_VALUE);//int类型的最大值
 System.out.println(Integer.MIN_VALUE);//int类型的最小值

2.png


同理来看看长整型的范围:


 

System.out.println(Long.MAX_VALUE);
   System.out.println(Long.MIN_VALUE);

3.png

长整型注意事项:


1.长整型变量的初始值后加L或者l,一般的花是加L。(如 long d=10L;)

2.长整型无论在哪个系统下都占8个字节。

3.long的包装类型为Long。


字节型变量

byte g=10;
        System.out.println(g);
        System.out.println(Byte.MAX_VALUE);
        System.out.println(Byte.MIN_VALUE);


字节型的包装类型为Byte。

byte在任何系统中都占1个字节。

4.png

浮点数变量

双精度浮点数

double a=1.1;
System.out.println(a*a);

5.png

为什么这里的结果不是具体的1.21呢?因为小数在计算机当中没有一个非常具体的完全的表示,只能说精确到某一位(比如说精确到后6位)。


1.double类型在任何系统下都是占8个字节

2.double的包装类型为Double。

3.double类型的内存布局遵守IEEE 754标准(和C语言一样),尝试使用有限的内存空间表示可能无限的小数,势必会存在一定的精度误差,因此浮点数是一个近似值,不是精确值。


单精度浮点数


我们可以看到定义一个单精度浮点数变量时,如果53.2不加f或者F的话,会被默认为double类型,float为4个字节,而double占8个字节,所以计算机认为这个不安全的操作。所以我们在定义float类型变量时需要在初始值的后面加上f或者F。即 float n=53.2f;。

6.png

float类型在Java中占用4个字节,同样遵循IEEE 754标准。由于表示的数据精度范围较小,一般在工程上用到浮点数都优先考虑double,另外float的包装类型为Float。


字符型变量

char ch='a';//注意占用的是2个字节
 char ch2='好';//也可以表示汉字
 System.out.println(ch);
 System.out.println(ch2)


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

2.Java中使用单引号 + 单个字母的形式表示字符字面值。

3.char的包装类型为Characher。


布尔型变量

boolean flg=true;
System.out.println(flg);

f990697710b64a8c84c21781a44ff386.png

注意:1.在Java中,boollean类型的值只有两个,要么是true要么是false。没有像C语言那样0是假,非零就是真的说法。

2.java虚拟机规范中,没有明确规定Boolean占几个字节,也没有专门来处理Boolean的字节码指令,在Oracle公司的虚拟机中,boolean占用1个字节。

3.Boolean的包装类型为Boolean。


空常量null

类型转换

在Java中,不同类型的之间的变量相互赋值的时候,会有较为严格的校检。

而在Java中,类型转换主要分为两类:自动类型转换(隐式)和强制类型转换(显示)。

举个简单的例子:


int a=10;
long b=20;
b=a;//编译可以通过,a和b都是整型,但是a的范围小(4个字节),b的范围大(8个字节),编译器会自动提升a为long类型,然后进行赋值
a=b;//编译不可以通过,会有数据丢失,不安全
1


简单来说:

1.大范围的是不可以转成小范围的(数据可能丢失,不安全),但是小范围可以转成大范围的。

2.两个毫不相干的类型是不能进行强制类型转换的。

比如:

int a=10;
boolean flg=true;
flg=(bollean)a;//编译失败,因为这两个类型毫不相干。


自动类型转换:意思是代码不需要进行任何人为的处理,在进行代码编译的时候,编译器会自动进行处理,特点:数据范围小的转换为数据范围大的时会进行自动进行转换。


类型提升

1.int和long:int可以提升为long,但long不可以转为int

例如:

int a=10;
        long b=20;
        int c=a+b;

7.png

4字节和8字节进行运算时,会先把4字节提升为8字节,然后再来进行运算,最后结果一定是8字节。

这里有两种解决方法

方法1:将其结果强转为int类型。

8.png

方法2:

9.png

2.byte和byte之间的运算

10.png

当参与运算的数据小于4个字节的时候,会进行提升。

我们当然可以进行强制类型转换,如byte c = (byte)(a+b);,但是,所有的强制类型转换都是有风险的,尽管编译可以通过。

正确的写法是这样的:

11.png

由于计算机的CPU通常是按住4个字节为单位从内存中读写数,为了硬件上实现方便,诸如short和byte这种低于4字节的类型,会先提升为int,在参与计算。


字符串类型

在C语言中,字符串是以\0为结尾的。

而在Java中,字符串并不是以\0为结尾的。


String s="hello";
System.out.println(s);

注意:当字符串和整数在一起使用+号的时候,就是拼接的意思。比如:

举个例子:

int a=10;
 int b=20;
 System.out.println(a+b);
 System.out.println("a:"+a+"b:"+b);

1.png

在比如:


2.png

3.png

String s1="hello ";
String s2="world";
System.out.println(s1+s2);

4.png

1.int转为String

比如:

int num=10;
        //方法1
        String str1=num+"";
        System.out.println(str1);
        //方法2(借助方法)
        String str2=String.valueOf(num);
        System.out.println(str2);

5.png

2.String转为int

String str="1234";
        //方法1
        int a=Integer.parseInt(str);
        System.out.println(a+1);
        //方法2
        a=Integer.valueOf(str);
        System.out.println(a+1);

6.png

好了,以上就是Java数据类型与变量的基本内容。

主要是Java中的各种常量,各种类型,以及类型转换的一些内容。

就到这里吧,再见了各位!!!

目录
相关文章
|
2月前
|
存储 Java Go
【Java】(3)8种基本数据类型的分析、数据类型转换规则、转义字符的列举
牢记类型转换规则在脑海中将编译和运行两个阶段分开,这是两个不同的阶段,不要弄混!
193 2
|
2月前
|
Java Go 开发工具
【Java】(2)Java数据类型阐述、基本数据类型的占用和范围、二进制的讲述
数据的一种表示形式。十进制表示满十进一原则。二进制表示满二进一原则。例如:十进制例如:二进制计算机在任何情况下都只能识别二进制。
121 1
|
3月前
|
安全 Java
使用Java多态性进行数据类型转换
以上示范了如何通过多态性来执行安全有效地对于Java对象间相互之间进行正确方式与场合下正确格式与条件限定内对于各个层级关系内部成员及其功能调取与应有操作处理过程,并通过 `instanceof`关键字确保了程序运行期间遵循逻辑合理并符合预设规则条件限定内正常工作流程而无需担忧潜藏风险问题出现可能带来影响结果质量问题情况存在可能。
123 12
|
9月前
|
存储 Java
# 【Java全栈学习笔记-U1-day02】变量+数据类型+运算符
本篇笔记主要围绕Java全栈学习的第二天内容展开,涵盖了变量、数据类型、运算符以及Scanner类的应用。首先介绍了变量的概念与命名规范,以及如何定义和使用变量;接着详细讲解了Java中的基本数据类型,包括整型、浮点型、字符型、布尔型等,并通过实例演示了数据类型的运用。随后,深入探讨了各类运算符(赋值、算术、关系、逻辑)及其优先级,帮助理解表达式的构成。最后,介绍了如何利用Scanner类实现用户输入功能,并通过多个综合示例(如计算圆面积、购物打折、变量交换及银行利息计算)巩固所学知识。完成相关作业将进一步加深对这些基础概念的理解与实践能力。
160 13
|
4月前
|
存储 缓存 算法
Java数据类型与运算符深度解析
本文深入解析Java中容易混淆的基础知识,包括八大基本数据类型(如int、Integer)、自动装箱与拆箱机制,以及运算符(如&与&&)的使用区别。通过代码示例剖析内存布局、取值范围及常见陷阱,帮助开发者写出更高效、健壮的代码,并附有面试高频问题解析,夯实基础。
|
5月前
|
存储 人工智能 JavaScript
Java中的数据类型转换
本文介绍了 Java 中常见的数据类型转换方法,涵盖字符串与整型、长整型、浮点型、布尔型及日期类型的相互转换,并讲解了可能出现的异常和处理方式。
247 0
|
9月前
|
存储 传感器 缓存
java变量与数据类型:整型、浮点型与字符类型
### Java数据类型全景表简介 本文详细介绍了Java的基本数据类型和引用数据类型,涵盖每种类型的存储空间、默认值、取值范围及使用场景。特别强调了`byte`、`int`、`long`、`float`、`double`等基本类型在不同应用场景中的选择与优化,如文件流处理、金融计算等。引用数据类型部分则解析了`String`、数组、类对象、接口和枚举的内存分配机制。
291 15
|
9月前
|
Java
课时14:Java数据类型划分(初见String类)
课时14介绍Java数据类型,重点初见String类。通过三个范例讲解:观察String型变量、"+"操作符的使用问题及转义字符的应用。String不是基本数据类型而是引用类型,但使用方式类似基本类型。课程涵盖字符串连接、数学运算与字符串混合使用时的注意事项以及常用转义字符的用法。
262 9
|
9月前
|
Java
课时13:Java数据类型划分(布尔型)
观察布尔型的操作。布尔是一位数学家的名字,这个布尔发明了两个单词:True、False(一个表示真一个表示假)。一般布尔类型都只表示逻辑的计算结果。
226 9
|
8月前
|
存储 缓存 Java
理解Java引用数据类型:它们都是对象引用
本文深入探讨了Java中引用数据类型的本质及其相关特性。引用变量存储的是对象的内存地址而非对象本身,类似房子的地址而非房子本身。文章通过实例解析了引用赋值、比较(`==`与`equals()`的区别)以及包装类缓存机制等核心概念。此外,还介绍了Java引用类型的家族,包括类、接口、数组和枚举。理解这些内容有助于开发者避免常见错误,提升对Java内存模型的掌握,为高效编程奠定基础。
394 0