IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 【Java基础知识点+易混淆点(1)】之数据类型与变量 -> 正文阅读

[Java知识库]【Java基础知识点+易混淆点(1)】之数据类型与变量

  • 在Java中,main所在的类的名字必须要与文件名一致。
  • 在Java中,没有全局变量的说法,所有方法以及变量必须要定义在类中。
  • 常量即程序运行期间一直不变的量。
  • 在Java中,数据类型主要分为两类:基本数据类型(也叫内置数据类型)和引用数据类型。
  • 基本数据类型分为四类八种,如下所示

在这里插入图片描述

  • 关于Java基础数据类型值得注意的点:
    (1)整形和浮点型都是有符号的;
    (2)整形默认为int,浮点型默认为double;
    (3)在任何系统下,byte都占1个字节、short都占2个字节、int都占4个字节、long都占8个字节、double都占8个字节;
    (4)在 Java 中float占4个字节,由于表示的数据精度范围较小, 一般在工程上用到浮点数都优先考虑 double;
    (5)计算机中字符本质是整数,在C语言中用ASCII表示字符、在Java中则用Unicode表示字符,因此在Java中char占2个字节-----可表示的字符种类更多,包括中文;
    (关于Unicode更多详情指路大佬这边-----https://zhuanlan.zhihu.com/p/35172335)
    (6)boolean类型并没有明确的规定内存占用字节个数;
    (更多比较严谨的说明指路大佬这边-----https://blog.csdn.net/amoscn/article/details/97377833)
    (7)浮点数与整数在内存中的储存方式不同,所以浮点型不能单纯的使用2^n的形式来计算;又因为其内存布局遵守IEEE 754标准(和C语言一致),用有限的内存空间表示可能无限的小数----导致存在一定的精度误差,因此浮点数是近似值而非精确值;
    (4)float、long类型书写规范:
下面是不注意就容易写成这样的错误形式
//这是一种会报错的错误写法!
long a=2^31;    //超出了默认int型的范围
float b=3.14;
在上面情况中,由于整形默认为int类型,long长整型赋值一
个超出int范围的值是会编译不通过的;由于浮点型默认
double类型,float与double不兼容,所以也会编译不通过。
下面是正确格式
long a=2^31L;
float b=3.14f;
  • 在Java中,当整型数字(字面值常量)给整型变量赋值时,编译器会自动检测该数据是否超过该变所对应的数据类型(所以就算一开始默认成int类型对byte、short类型也没有影响);但是当使用变量来赋值的时候,编译器就不会去检测了。
示例代码如下:
int a=100;
short s=200;
byte b=50;  
//上面这三种中的赋值号后面都是默认int类型,但是编译器会自动检测范围是否符合赋值号左侧的数据类型

b=100;//正确,byte类型的变量b再次赋值,符合byte范围
b=a;//错误,编译直接不通过,原因有二:1、a是int类型会强制类型转换;2、当使用变量赋值时,编译器不会去检测范围
  • 类型转换: Java是一种强类型编程语言,当不同类型之间的变量相互赋值的时候,会有较为严格的检验;Java中的类型转换主要分为两种:自动类型转换(隐式)和强制类型转换(显式)
  • 隐式类型转换:在编译期间,编译器自动进行转换;特点为将数据范围小的类型自动转换成数据范围大的类型。
  • 显式类型转换:编译器不会进行自动转换,需要手动进行转换;特点为将数据范围大的类型转换为小的类型时会报错,需要手动进行转换。
  • 关于类型转换需要注意的点:
    (1)如果把范围大的类型赋值给范围小的,需要强制类型转换,但是可能会发生精度丢失;
    (2)强制类型转换不一定能成功,不相干的类型不能互相转换;
    (3)将一个字面值常量进行赋值的时候,Java会自动针对数字范围进行检查;
    (4)不同数字类型的变量之间赋值,表示范围更小的类型能隐式转换成范围更大的类型。
  • 类型提升:
  • (1)不同类型的数据之间互相运算时,数据类型小的会被提升到数据类型大的。
示例代码如下:
int a=10;
int b=20;
int c=a+b;//错误,编译报错 因为a+b类型提升成 long+long---结果也为long,赋值给int时可能会精度丢失
long d=a+b;//正确
  • (2)对于byte、short类型,比4个字节小会先提升成4个字节的int类型,再进行运算。
    原因:由于计算机的CPU通常是按照4个字节为单位从内存中读写数据,为了让硬件方面操作更方便,所以会让低于4个字节的byte、short类型先提升再运算。
示例代码如下:
byte a=10;
byte b=20;
byte c=a+b;//错误,编译报错 因为a+b会提升为int+int 结果为int再赋值给byte类型并不兼容,可能会精度丢失
byte c=(byte)(a+b);//正确,进行强制类型转换
  • 字符串类型: 在Java中使用String类定义字符串类型,在有些情况下需要将字符串和整型数字之间进行转换。
示例代码如下:
//1.int类型转成String
int num=10;
String str1=num+"";//方法一
String str2=String.valueOf(num);//方法二

//2.String转成int
String str="100";
int num=Integer.parseInt(str);
  • 引申:关于字符集、字符编码。字符集就是字符的集合;字符编码就是按照一定规则对不同的字符进行存储,例如UTF-8、GB2312、GBKB(关于字符集、字符编码更多详情指路大佬这边------https://www.shangmayuan.com/a/a6a95d9f8c9c402f882a13d6.html)
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-15 15:22:28  更:2021-08-15 15:23:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 10:22:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码