3、Java入门教程【数据类型】

一、概述

java中数据类型分为两大类:【基本数据类型】和【引用数据类型】

image-20230715145246736

二、基础数据类型

数据类型含义默认值取值范围存储大小(字节)
整型byte字节型0-128 到 1271
整型short短整型0-2^15 到 2^15-12
整型int【默认】整形0-2^31 到 2^31-14
整型long长整型0L-2^63 到 2^63-18
浮点型float单浮点型0.0f1.4e-45 到 3.4e+384
浮点型double【默认】双浮点型0.0d4.9e-324 到 1.798e+3088
字符型char字符型‘u0000’‘\u0000’ 到 ‘\uFFFF’2
布尔型boolean布尔型false0(false) 到 1(true)1

需要注意的是,在实际开发过程中,整形的默认类型是int,浮点型的默认类型是double

package com.itfeiniu.hello;

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!");
        byte b = 100;
        short s = 20;
        int i = 30;
        long l = 452422421123L;//长整型赋值时,值的最后需要添加L/l符号

        float f = 3.14f;//浮点型赋值时,值的最后需要添加F/f符号
        double d = 56.45;

        char ch1 = 'a';
        char ch2 = '中';
        char ch3 = 'A';
        int ch4 = ch3;

        boolean be = true;

        System.out.println(ch4);
    }
}

任何数字的默认类型是int类型,下面452422421123其实没有超过long的范围,但是已经超过了int的范围,所以如果最后没有添加l/L,那么默认会认为是int类型,则会因为超出范围而报错。

long l = 452422421123L;//长整型赋值时,值的最后需要添加L/l符号

所有带小数点的浮点数默认都是double类型,所以当前把double类型的小数赋值给float,则会报错,需要在最后加上f/L声明小数是个单精度float类型。

float f = 3.14f;//浮点型赋值时,值的最后需要添加F/f符号

三、引用类型

  • 在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如 Employee、Puppy 等。变量一旦声明后,类型就不能被改变了。
  • 对象、数组都是引用数据类型。
  • 所有引用类型的默认值都是null。
  • 一个引用变量可以用来引用任何与之兼容的类型。
  • 例子:Site site = new Site("Runoob")

四、类型转换

1、自动类型转换

整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。

类型范围小的变量,可以直接复制给类型范围大的变量。这里的范围是指取值范围,而不是内存的存储大小。

具体规则如下:

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

可以看到,long占用8个字节,但是取值范围比float小,所以long还是可以赋值给float类型。

下面是演示short可以转换为int,但是却不能赋值给byte。

short a = 10;
byte b = a;	//提示报错
int c = a;	//正常

数据类型转换必须满足如下规则:

  1. 不能对boolean类型进行类型转换。

  2. 不能把对象类型转换成不相关类的对象。

  3. 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。

  4. 转换过程中可能导致溢出或损失精度,

2、强制类型转换

  1. 条件是转换的数据类型必须是兼容的。

  2. 格式:(type)value type是要强制类型转换后的数据类型 实例:

int i1 = 123;
byte b = (byte) i1;//强制类型转换为byte
byte c = i1;	//报错

3、表达式的自动类型转换

在表达式中,小范围类型的变量,会自动转换成表达式中较大范围的类型,再参与运算。

byteshortchar->int->long->float->double

注意事项:

  • 表达式的最终结果类型由表达式中的最高类型决定。
  • 在表达式中,byteshortchar是直接转换成int类型参与运算的。
byte a = 10;
int b = 20;
double c = 30.0;
double d = a + b + c;
System.out.println(d);
//输出:60.0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/41331.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

1186. 删除一次得到子数组最大和;1711. 大餐计数;1834. 单线程 CPU

1186. 删除一次得到子数组最大和 解题思路:如果没做过还不是很好想,当时自己第一反应是双指针,结果是个动态规划的题。 核心就是dp的定义,dp[i][k]表示以arr[i]结尾删除k次的最大和。看到这里其实就有一点思路了 dp[i][0]表示以…

⛳ Git安装与配置

Git安装配置目录 ⛳ Git安装与配置🏭 一,git的安装🎨 1,下载git👣 2,下载完成之后,双击安装即可。💻 3,更改安装目录(没有中文且没有空格)&#x…

Netty核心技术十一--用Netty 自己 实现 dubbo RPC

1. RPC基本介绍 RPC(Remote Procedure Call):远程 过程调用,是一个计算机 通信协议。该协议允许运 行于一台计算机的程序调 用另一台计算机的子程序, 而程序员无需额外地为这 个交互作用编程 两个或多个应用程序都分 布在不同的服…

【已解决】html元素如何使字体占据相同的元素显得整齐

本博文源于自身的亲身实践,让html的文本元素对齐,如果不让其对齐就会变得很丑陋,如下图,那么如何设置才能让元素占据相同呢? 文章目录 1、问题来源2、问题解决思路3、问题解决方案4、问题完整源码及效果 1、问题来源 …

摩尔投票算法(Moore‘s Voting Algorithm)及例题

摩尔投票算法(Moores Voting Algorithm)及例题 摩尔投票算法简介摩尔投票算法算法思想摩尔投票算法经典题目169. 多数元素229. 多数元素 II6927. 合法分割的最小下标 上午打力扣第 354 场周赛最后十五分钟用摩尔投票算法直接秒了第三题。 摩尔投票算法简…

使用原生Redis命令实现分布式锁

推荐文章: 1、springBoot对接kafka,批量、并发、异步获取消息,并动态、批量插入库表; ​ 2、SpringBoot用线程池ThreadPoolTaskExecutor异步处理百万级数据; 3、java后端接口API性能优化技巧 4、SpringBootMyBatis流式查询,处理大规模数据,提高系统的性能和响应…

一零六四、世界杯数据可视化分析(阿里云天池赛)

目录 赛制官方链接 活动背景 活动时间:即日起-12月31日17点 数据说明 世界杯成绩信息表:WorldCupsSummary 世界杯比赛比分汇总表:WorldCupMatches.csv 世界杯球员信息表:WorldCupPlayers.csv 代码实现 赛制官方链接 世界杯…

Git 学习笔记

Git 仓库中的提交记录保存的是你的目录下所有文件的快照,就像是把整个目录复制,然后再粘贴一样,但比复制粘贴优雅许多! Git 希望提交记录尽可能地轻量,因此在你每次进行提交时,它并不会盲目地复制整个目录。…

使用typora+PicGo+Gitee简单实现图片上传功能

本文通过配置PicGoGitee来实现typora图片上传功能,系统是window 注意下载的清单有:PicGo,node.js,配置有:PicGo,node.js,gitee,typora 看着复杂实际上并不难,只是繁琐&am…

ADC 的初识

ADC介绍 Q: ADC是什么? A: 全称:Analog-to-Digital Converter,指模拟/数字转换器 ADC的性能指标 量程:能测量的电压范围分辨率:ADC能辨别的最小模拟量,通常以输出二进制数的位数表示,比如&am…

HttpClient使用MultipartEntityBuilder上传文件时乱码问题解决

HttpClient使用MultipartEntityBuilder是常用的上传文件的组件,但是上传的文件名称是乱码,一直输出一堆的问号: 如何解决呢?废话少说,先直接上代码: public static String doPostWithFiles(HttpClient http…

scripy其他

持久化 # 爬回来,解析完了,想存储,有两种方案 ## 方案一:一般不用 parse必须有return值,必须是列表套字典形式--->使用命令,可以保存到json格式中,csv中scrapy crawl cnblogs -o cnbogs.j…

【精华】maven 生命周期 + 依赖传递+ scope【依赖范围】 + 排除依赖 可选依赖

目录 一 . lifecycle 生命周期 二. 依赖 与 依赖传递 三. scope 依赖范围 scope指定依赖范围 依赖传递依赖与原依赖冲突 四 maven的可选依赖与排除依赖 可选依赖 全部 排除依赖 显式的指定 maven官网技术文档: 一 . lifecycle 生命周期 * clean&…

基于appium的常用元素定位方法

目录 一、元素定位工具 1.uiautomatorviewer.bat 2.appium检查器 二、常用元素定位方法 1.id定位 2.class_name定位 3.accessibility_id定位 4.android_uiautomator定位 5.xpath定位 三、组合定位 四、父子定位 五、兄弟定位 总结: 一、元素定位工具 app应…

postgresql regular lock常规锁申请与释放 内幕 以及fastpath快速申请优化的取舍

​专栏内容: postgresql内核源码分析 手写数据库toadb 并发编程 个人主页:我的主页 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 定义 每种常规锁都需要定义几个要素,它由结构体 Lo…

边缘检测之loG算子

note // 边缘检测之loG算子:对高斯函数求二阶导数 // G(x,y) exp(-1 * (x*x y*y) / 2 / sigma / sigma) // loG(x,y) ((x*x y*y - 2 * sigma * sigma) / (sigma^4)) * exp(-1 * (x*x y*y) / 2 / sigma /sigma) /* [ 0,0,-1,0,0; 0,-1,-2,-1,0; -1,-2,16,-2…

(栈队列堆) 剑指 Offer 09. 用两个栈实现队列 ——【Leetcode每日一题】

❓ 剑指 Offer 09. 用两个栈实现队列 难度:简单 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead …

Shikra:新一代多模态大语言模型,理解指向,说出坐标

“ Shikra:解锁多模态语言模型参考对话的魔法” Shikra和用户的对话案例 在人类的日常交流中,经常会关注场景中的不同区域或物体,双方都可以通过说话并指向这些区域来进行高效的信息交换。我们将这种对话模式称为参考对话(Referen…

C语言 替换gets函数

目录 替换gets函数gets()用处gets()的危险之处gets()的几种替代方法一、用%c循环输入直到遇到换行结束二、用getchar()循环输入直到遇到换行结束三、scanf的另一种用法四、c中的getline()方法五、解决方案使用fgets代替 替换gets函数 gets()用处 gets从标准输入设备读字符串函…

C# Linq 详解四

目录 概述 二十、SelectMany 二十一、Aggregate 二十二、DistinctBy 二十三、Reverse 二十四、SequenceEqual 二十五、Zip 二十六、SkipWhile 二十七、TakeWhile C# Linq 详解一 1.Where 2.Select 3.GroupBy 4.First / FirstOrDefault 5.Last / LastOrDefault C# Li…