初识Java--Java数据类型

这篇具有很好参考价值的文章主要介绍了初识Java--Java数据类型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一 Java数据类型

java数据类型主要分为基本数据类型引用数据类型
基本数据类型有四种①整型②浮点型③字符型④布尔型
字符串类型属于引用型数据类型

数据类型 关键字 所占字节 范围
字节型 byte 1字节 -128~127
短整型 short 2字节 -32768~32767
整型 int 4字节 -231~231-1
长整型 long 8字节 -263~263-1
单精度浮点型 float 4字节 有范围一般不关注
双精度浮点型 double 8字节 有范围一般不关注
字符型 char 2字节 0~65535
布尔型 boolean 无明确规定 true和false

1.1整型

整型包括字节型,短整型,整型,长整型
在Java中,整型int所占字节一直是4字节,长整型long一直是8字节

字节是计算机表示空间大小的基本单位。

1字节是由**8位二进制数(bit)**组成,

// byte型变量所能表示的范围:
System.Out.println(Byte.MIN_VALUE);
System.Out.println(Byte.MAX_VALUE);
//int类型所能表示的范围
System.Out.println(Integer.MIN_VALUE);
System.Out.println(Integer.MAX_VALUE);
//long类型所能表示的范围
System.Out.println(Long.MIN_VALUE);
System.Out.println(Long.MAX_VALUE);
// short型变量所能表示的范围:
System.Out.println(Short.MIN_VALUE);
System.Out.println(Short.MAX_VALUE);

1.2浮点型

在java中,小数被默认为double类型,除非明确声明该小数为float类型

当然,浮点型存在一个弊端

double x=1.1;
System.out.println(x * x);
结果为1.21吗?并不是
结果为 
1.2100000000000002

这时由于浮点数在机器中的存储方式产生的。
有兴趣可以去看博主先前的文章整数浮点数在内存中的存储

1.3字符型

char ch='乐';
char pc='A';

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

1.4布尔型

  1. boolean 类型的变量只有两种取值, true 表示真, false 表示假.

与c语言不同的是,Java中布尔类型并不能与int类型互通
不存在1代表true 0代表false这种情况,也就意味着在程序中,以下程序不能正常运行;

int a=3int c=6while(a--){
    c++}//这样会报错

Java虚拟机规范中,并没有明确规定boolean占几个字节,也没有专门用来处理boolean的字节码指令,在
Oracle公司的虚拟机实现中,boolean占1个字节

二 数据类型转换与提升

2.1类型提升

①在两个操作数中,有一个操作数的类型为double,则另一个操作数也会转换为double类型。
②否则,若其中有一个操作数是float类型,则另一个操作数也会转为float类型
③否则,若其中有一个操作数是long类型,则另一个操作数也会转为long类型
④否则,两个操作数都会被转为int类型进行运算

因为电脑CPU通常以4个字节从内存中读取,为了硬件上实现方便,将小于四个字节的类型提升为int类型进行运算。

2.2类型转换

在类型转换中,会存在类型提升的情况

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

代码不需要经过任何处理,在代码编译时,编译器会自动进行处理。特点:数据范围小的转为数据范围大的时会自动进行。
不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型

如下代码在运行过程中就自动的发生了类型转换

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表示数据范围大,直接将

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表示的数据范围大,需要强转,小数点之后全部丢弃

在强制类型转换中,如果一个数值要从一个数据类型强制转换为另一种数据类型,而超过了目标数据类型的范围,就会发生截断,变成另一个完全不同的值
例如

byte300//结果为44

这时你可能会产生疑惑,明明byte的存储范围是-128~127
为什么300存入之后得到的值为44,这里就要提到在内存的存储方式了

初识Java--Java数据类型,Java,java,开发语言
从 0开始(即00000000)开始,存储127位(即01111111)这时再存储时就会变成10000000这里最高位的1代表符号位,表示负数-128,随着数字的增大,变成-127(10000001),-126,-125…到-1(11111111),再进行下一次轮回从0开始,因为byte只有8位bit位;

double x=9.985;
int d=int)x;
//这里对x截断后,d得到的值为9;

如果想要四舍五入来得到最接近的整数,这时需要调用Math.round方法

double x=9.985;
int d=(int)Math.round(x)

这里d的值就是10了,既然引用了round方法,为什么还要使用int类型强转呢?
其实是因为round方法的返回类型为long类型,为了防止发生信息丢失,所以我们需要将long类型强转为int类型。
码字不易,感谢观看
如果对你有帮助的话,记得点赞👍评论+关注吧文章来源地址https://www.toymoban.com/news/detail-717217.html

到了这里,关于初识Java--Java数据类型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【NCRE 二级Java语言程序设计01】全国计算机等级考试初识

    📜 本专栏主要是分享自己备考全国计算机二级Java语言程序设计所学心得体会、所搜集的资料信息。虽然有 Java 语言相关基础,但是 Java 桌面编程、Applet 小程序编程根本没学过,因为咱不是搞这个的呀,学了它们也找不到这方面工作呀。但是对于考二级 Java 的小伙伴来说是必

    2024年02月10日
    浏览(32)
  • 初识C语言·自定义类型(1)

    目录 1 联合体类型的声明 2 联合体的特点 3 联合体的大小计算 4 枚举类型类型的声明 5 枚举的优点 联合体,顾名思义,是多个对象连在一起的,即联合体的成员都是共用空间的,所以联合体也叫做 共用体 ,既然是共用一块空间,那么改变其中一个成员的值的时候,其他对象

    2024年01月22日
    浏览(28)
  • Linux C语言开发(二)C语言数据类型

    目录 一.C语言概述 1.1 什么是C语言 1.2 C语言与Linux 1.3 C语言的特点 二.数据类型

    2024年01月17日
    浏览(30)
  • 【java的类型数据】——八大类型数据

    字面常量就是在程序运行期间,固定不变的量。 1.字符串常量:括号括起来的,比如”12345”、“hello”、 “你好” 2.整形常量:程序中直接写的数字(注意没有小数点),比如: 100、1000 3.浮点数常量:程序中直接写的小数,比如: 3.14、 0.49 4.字符常量:由单引号括起来的当个字符,比

    2024年02月15日
    浏览(33)
  • 【Java 基础篇】Java 数据类型

    Java是一门强类型的编程语言,它要求在使用变量之前必须先声明其数据类型。数据类型定义了变量的取值范围和可进行的操作。在Java中,有原始数据类型(Primitive Types)和引用数据类型(Reference Types)两种类型。本篇博客将深入探讨Java的数据类型,并提供相关代码示例。

    2024年02月11日
    浏览(40)
  • 以太坊智能合约开发:Solidity 语言中的数据类型

    本文我们介绍Solidity语言的数据类型,重点是值类型,包括布尔类型、整型、地址类型、字节类型、字符串类型和枚举类型。并且通过两个智能合约例子,用于演示这些数据类型的声明与使用方法。 访问 Github 仓库 获取更多资料。 Solidity中关于数据类型的定义如下: Solidity是

    2024年02月02日
    浏览(56)
  • Java009——Java数据类型简单认识

    围绕以下3点学习: 1、什么是Java数据类型? 2、Java数据类型的作用? 3、Java有哪些数据类型? 4、熟悉Java8大基本数据类型 当我们写Java代码时,需要把数据保存在 变量 (指值可以变的量,例如:数学中假设x,y,z变量一样)中,这些变量的类型可以是整数(如100,5,50)、小

    2024年02月08日
    浏览(26)
  • Java语言开发在线小说推荐网 小说推荐系统 基于用户、物品的协同过滤推荐算法 SSM(Spring+SpringMVC+Mybatis)开发框架 大数据、人工智能、机器学习开发

    1、开发工具和使用技术 MyEclipse10/Eclipse/IDEA,jdk1.8,mysql5.5/mysql8,navicat数据库管理工具,tomcat,SSM(spring+springmvc+mybatis)开发框架,jsp页面,javascript脚本,jquery脚本,bootstrap前端框架(用户端),layui前端框架(管理员端),layer弹窗组件等。 2、实现功能 前台用户包含:注

    2023年04月26日
    浏览(57)
  • Java开发学习(二十五)----使用PostMan完成不同类型参数传递

    学习路线指引(点击解锁) 知识定位 人群定位 🧡 Python实战微信订餐小程序 🧡 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 💛Python量化交易实战💛 入门级 手把手带你打造一个易扩展、更安全、效率更高的量

    2023年04月09日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包