当前位置: 首页 > news >正文

【0基础学Java第二课】数据类型与变量

2. 数据类型与变量

  • 2.1 字面常量
  • 2.2 数据类型
  • 2.3 变量
    • 2.3.1 变量概念
    • 2.3.2 语法格式
  • 2.4 整型变量
    • 2.4.1 整型变量
    • 2.4.2 长整型变量
    • 2.4.3 短整型变量
    • 2.4.4 字节型变量
  • 2.5 浮点型变量
  • 2.6 字符型
  • 2.7 布尔型变量
  • 2.8 类型转换
  • 2.9 类型提升
  • 2.10 字符串类型
    • 2.10.1 字符串拼接操作符 +
    • 2.10.2 int 互相转换String

2.1 字面常量

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

在这里插入图片描述其中:100、3.14、‘A’、true/false都是常量,将其称为字面常量。

字面常量的分类:

  1. 字符串常量:由""括起来的,比如“12345”、“hello”、“你好”。
  2. 整形常量:程序中直接写的数字(注意没有小数点),比如:100、1000
  3. 浮点数常量:程序中直接写的小数,比如:3.14、0.49
  4. 字符常量:由 单引号 括起来的当个字符,比如:‘A’、‘1’
  5. 布尔常量:只有两种true和false
  6. 空常量:null(后面了讲)
    注意:字符串、整形、浮点型、字符型以及布尔型,在Java中都称为数据类型。

2.2 数据类型

在Java中数据类型主要分为两类:基本数据类型引用数据类型
基本数据类型有四类八种:

  1. 四类:整型、浮点型、字符型以及布尔型
  2. 八种:
    在这里插入图片描述
    注意:
  • 不论是在16位系统还是32位系统,int都占用4个字节,long都占8个字节
  • 整形和浮点型都是带有符号的
  • 整型默认为int型,浮点型默认为double
  • 字符串属于引用类型。

字节:是计算机中表示空间大小的基本单位.
计算机使用二进制表示数据. 我们认为 8 个二进制位(bit) 为一个字节(Byte).

2.3 变量

2.3.1 变量概念

在程序中,除了有始终不变的常量外,有些内容可能会经常改变,比如:人的年龄、身高、成绩分数、数学函数的计算结果等,对于这些经常改变的内容,在Java程序中,称为变量。而数据类型就是用来定义不同种类变量的。

2.3.2 语法格式

数据类型 变量名 = 初始值;
在这里插入图片描述

2.4 整型变量

2.4.1 整型变量

    public static void main2(String[] args) {int a=10;System.out.println(a);//Java不允许你使用 未初始化的局部变量//局部变量:定义在方法内部的变量
/*        int b;System.out.println(b);*///Integer  其实也是int,术语叫做:包装类型。 是int的plus大版本System.out.println(Integer.MAX_VALUE);System.out.println(Integer.MIN_VALUE);Integer aa=10;System.out.println(aa);}

注意事项:

  1. int不论在何种系统下都是4个字节
  2. 推荐使用方式一定义,如果没有合适的初始值,可以设置为0
  3. 在给变量设置初始值时,值不能超过int的表示范围,否则会导致溢出
  4. 变量在使用之前必须要赋初值,否则编译报错
  5. int的包装类型为 Integer

2.4.2 长整型变量

    /** long 8个字节 -2^63~ 2^63 -1* */public static void main3(String[] args) {long a = 10L;System.out.println(a);System.out.println(Long.MAX_VALUE);System.out.println(Long.MIN_VALUE);}

注意事项:

  1. 长整型变量的初始值后加L或者l,推荐加L
  2. 长整型不论在那个系统下都占8个字节
  3. 长整型的表示范围为: ~
  4. long的包装类型为Long

2.4.3 短整型变量

    /** 短整型 short 2个字节* -2^15  ~ 2^15 -1* */public static void main4(String[] args) {short sh = 19;System.out.println(sh);System.out.println(Short.MAX_VALUE);System.out.println(Short.MIN_VALUE);}

注意事项:

  1. short在任何系统下都占2个字节
  2. short的表示范围为:-32768 ~ 32767
  3. 使用时注意不要超过范围(一般使用比较少)
  4. short的包装类型为Short

2.4.4 字节型变量

    /**  字节型 byte (一个字节 8个比特位) -2^7 ~ 2^7 -1* */public static void main5(String[] args) {byte a = 10;System.out.println(a);System.out.println(Byte.MAX_VALUE);System.out.println(Byte.MIN_VALUE);}

注意事项:

  1. byte在任何系统下都占1个字节
  2. byte的范围是:-128 ~ 127
  3. 字节的包装类型为Byte

2.5 浮点型变量

双精度浮点型单精度浮点型

    public static void main6(String[] args) {float f = 10.2f;  //加了f之后就是float类型, 4个字节System.out.println(f);//Float  单精度浮点数double d = 10.2;System.out.println(d);//Doble  双精度浮点数  8个字节float a = 1;int b = 2;System.out.println(a/b);//0.5double dd = 1.1;System.out.println(dd*dd);// 1.2100000000000002}

注意事项:

  1. double在任何系统下都占8个字节
  2. 浮点数与整数在内存中的存储方式不同,不能单纯使用的形式来计算
  3. double的包装类型为Double
  4. double 类型的内存布局遵守 IEEE 754 标准(和C语言一样), 尝试使用有限的内存空间表示可能无限的小数, 势必会存在一定的精度误差,因此浮点数是个近似值,并不是精确值。

2.6 字符型

    // 字符型 char 2个字节 0-65535public static void main(String[] args) {char ch = '牛'; //一个汉字占两个字节System.out.println(ch);Character a = 'b'; //unicode字符集}

注意事项:

  1. Java 中使用 单引号 + 单个字母 的形式表示字符字面值.
  2. 计算机中的字符本质上是一个整数. 在 C 语言中使用 ASCII 表示字符, 而 Java 中使用 Unicode 表示字符. 因此一个字符占用两个字节, 表示的字符种类更多, 包括中文.

2.7 布尔型变量

    public static void main8(String[] args) {//在Java里  boolean只有2个值  要么true  要么false//不能赋值1和0来代表真假boolean flog = true;boolean flog2 = false;//flog.sout  -- 快捷键 变量名.soutSystem.out.println(flog2);//boolean类型 没有明确的大小  JVM没有规定 在Oracle中占 1个字节//包装类型Boolean}

2.8 类型转换

    public static void main9(String[] args) {
/*        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表示数据范围大,直接将float交给double会有数据丢失,不安全byte b5 = 100; // 编译通过,100没有超过byte的范围,编译器隐式将100转换为byte//byte b6 = 257; // 编译失败,257超过了byte的数据范围,有数据丢失*/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表示的数据范围大,需要强转,小数点之后全部丢弃byte b1 = 100; // 100默认为int,没有超过byte范围,隐式转换byte b2 = (byte)257; // 257默认为int,超过byte范围,需要显示转换,否则报错boolean flag = true;//a = flag; // 编译失败:类型不兼容//flag = a; // 编译失败:类型不兼容}

注意事项:

  1. 不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型
  2. 如果需要把范围大的类型赋值给范围小的, 需要强制类型转换, 但是可能精度丢失
  3. 将一个字面值常量进行赋值的时候, Java 会自动针对数字范围进行检查
  4. 强制类型转换不一定能成功,不相干的类型不能互相转换

2.9 类型提升

    public static void main(String[] args) {int a = 10;long b = 20;//int c = a + b; // 编译出错: a + b==》int + long--> long + long 赋值给int时会丢失数据long d = a + b; // 编译成功:a + b==>int + long--->long + long 赋值给long//byte与byte的运算byte a1 = 10;byte b1 = 20;//byte c = a1 + b1;// 对于short, byte 这种比 4 个字节小的类型, 会先提升成 4 个字节的 int , 再运算.// 编译报错int c = a1 + b1;System.out.println(c);}

结论: byte 和 byte 都是相同类型, 但是出现编译报错. 原因是, 虽然 a 和 b 都是 byte, 但是计算 a + b 会先将 a
和 b 都提升成 int, 再进行计算, 得到的结果也是 int, 这是赋给 c, 就会出现上述错误.
由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据. 为了硬件上实现方便, 诸如 byte 和 short这种低于 4 个字节的类型, 会先提升成 int, 再参与计算。

  1. 不同类型的数据混合运算, 范围小的会提升成范围大的.
  2. 对于 short, byte 这种比 4 个字节小的类型, 会先提升成 4 个字节的 int , 再运算.

2.10 字符串类型

2.10.1 字符串拼接操作符 +

    public static void main10(String[] args) {//str 属于引用变量 -》 就是这个变量里面存的是地址//"hello"  没有所谓的\0就是字符串结尾的说法String str1 = "hello";System.out.println(str1);String str2 = "world";System.out.println(str2);//拼接String str3 = str1+str2;System.out.println(str3);int a = 10;//a == 10  java当中的字符串 和 其他数据类型 进行 +号操作的时候就是拼接System.out.println("a == "+a);int b = 20;System.out.println("a+b = "+ a+b);//a+b = 1020System.out.println("a+b = "+ (a+b));//a+b = 30System.out.println(a+b +"a+b");// 30 = a+b}

2.10.2 int 互相转换String

    public static void main11(String[] args) {//字符串转整型String str  = "123";int val = Integer.parseInt(str);System.out.println(val);//整型转字符串int a = 123;String str2 = String.valueOf(a);System.out.println(str2);//123String str3 = a+"";System.out.println(str3);//123String str4 = Integer.toString(a);System.out.println(str4);//123}

相关文章:

【0基础学Java第二课】数据类型与变量

2. 数据类型与变量 2.1 字面常量2.2 数据类型2.3 变量2.3.1 变量概念2.3.2 语法格式 2.4 整型变量2.4.1 整型变量2.4.2 长整型变量2.4.3 短整型变量2.4.4 字节型变量 2.5 浮点型变量2.6 字符型2.7 布尔型变量2.8 类型转换2.9 类型提升2.10 字符串类型2.10.1 字符串拼接操作符 2…...

Pytorch整体工作流程代码详解(新手入门)

一、前言 本文详细介绍Pytorch的基本工作流程及代码,以及如何在GPU上训练模型(如下图所示)包括数据准备、模型搭建、模型训练、评估及模型的保存和载入。 适用读者:有一定的Python和机器学习基础的深度学习/Pytorch初学者。 本文…...

读图数据库实战笔记02_图数据建模

1. 概念 1.1. 实体 1.1.1. 通常用名词来表示 1.1.2. 描述一个领域中的事物或者事物类型 1.1.2.1. 汽车 1.1.2.2. 用户 1.1.2.3. 地理位置 1.1.3. 在逻辑模型和技术实现过程中,实体通常会变成“顶点” 1.2. 关系 1.2.1. 用动词(或动词短语&#…...

竞赛 深度学习卫星遥感图像检测与识别 -opencv python 目标检测

文章目录 0 前言1 课题背景2 实现效果3 Yolov5算法4 数据处理和训练5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **深度学习卫星遥感图像检测与识别 ** 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐…...

对Happens-Before的理解

Happens-Before Happens-Before 是一种可见性模型,也就是说,在多线程环境下。原本因为指令重排序的存在会导致数据的可见性问题,也就是 A 线程修改某个共享变量对 B 线程不可见。因此,JMM 通过 Happens-Before 关系向开发人员提供…...

分类预测 | MATLAB实现SSA-CNN-BiGRU麻雀算法优化卷积双向门控循环单元数据分类预测

分类预测 | MATLAB实现SSA-CNN-BiGRU麻雀算法优化卷积双向门控循环单元数据分类预测 目录 分类预测 | MATLAB实现SSA-CNN-BiGRU麻雀算法优化卷积双向门控循环单元数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现SSA-CNN-BiGRU麻雀算法优化卷积双…...

Java面试八股文之暑假合集

八股文暑假合集 基础篇二分查找 java基础篇7月12号面向对象和面向过程的区别重载和重写String 7月13号自动装箱和拆箱静态方法构造方法成员变量和局部变量对象引用和对象实例返回值 与equals(重要)hashcode()和equals()HashMap 7月16号线程,进程和程序final关键字的…...

竞赛选题 深度学习卫星遥感图像检测与识别 -opencv python 目标检测

文章目录 0 前言1 课题背景2 实现效果3 Yolov5算法4 数据处理和训练5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **深度学习卫星遥感图像检测与识别 ** 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐…...

机器学习第一周

一、概述 机器学习大致会被划分为两类:监督学习,无监督学习 1.1 监督学习 监督学习其实就是,给计算机一些输入x和正确的输出y(训练数据集),让他总结x->y的映射关系,从而给他其他的输入x&a…...

大数据采集技术与预处理学习一:大数据概念、数据预处理、网络数据采集

目录 大数据概念: 1.数据采集过程中会采集哪些类型的数据? 2.非结构化数据采集的特点是什么? 3.请阐述传统的数据采集与大数据采集的区别? ​​​​​​​ ​​​​​​​4.大数据采集的数据源有哪些?针对不同的数…...

MySQL - 为什么索引结构默认使用B+树,而不是其他?

B-Tree的缺点: 范围查询效率相对较低:虽然B-Tree支持范围查询,但在实际操作中可能需要进行多次树遍历,性能较差。磁盘空间利用不高:B-Tree中的非叶子节点也存储数据,导致磁盘空间利用率相对较低。更复杂的平…...

信息系统项目管理师教程 第四版【第3章-信息系统治理-思维导图】

信息系统项目管理师教程 第四版【第3章-信息系统治理-思维导图】...

2023.NET技术沙龙知识学习笔记

目录 一.Bootstrap Blazor UI组件库企业级应用介绍1.Blazor是什么2.为什么要用Blazor3.Bootstrap Blazor是什么 二.使用WebAssembly运行、扩展.NET应用程序1.WebAssembly简介2.WebAssembly的起源3.为什么选择二进制格式?4.WebAssembly与传统JavaScript的对比5.执行速…...

Golang教程——配置环境,再探GoLand

文章目录 一、Go是什么?二、环境配置验证配置环境变量 三、安装开发者工具GoLand四、HelloGolang 一、Go是什么? Go(也称为Golang)是一种开源的编程语言,由Google开发并于2009年首次发布。Go语言旨在提供一种简单、高…...

C++之lambda匿名、using、typedef总结【全】(二百四十九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…...

基于SpringBoot的个人博客系统

基于SpringBootVue的个人博客系统的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringBootMyBatisVue工具:IDEA/Ecilpse、Navicat、Maven 系统展示 主页 系统公告 博客详情 后台发文 摘要 基于Spring Boot的个人博客系统是一种…...

javascript中的继承

基本术语 本文中,proto [[Prototype]] 原型链 基本思想: 构造函数生成的对象有一个指针(proto)指向构造函数的原型。如果将构造函数1的原型指向另一个构造函数2的实例,则构造函数1的实例__proto__.proto 指向了构…...

智能问答技术在百度搜索中的应用

作者 | Xiaodong 导读 本文主要介绍了智能问答技术在百度搜索中的应用。包括机器问答的发展历程、生成式问答、百度搜索智能问答应用。欢迎大家加入百度搜索团队,共同探索智能问答技术的发展方向,文末有简历投递方式。 全文6474字,预计阅读时…...

STM32F4X SDIO(一) SD卡介绍

STM32F4X SDIO(一) SD卡介绍 SD卡分类外观分类容量分类传输速度分类 在之前的章节中,讲过有关嵌入式的存储设备,有用I2C驱动的EEPROM、SPI驱动的FLASH和MCU内部的FLASH,这类存储设备的优点是操作简单,但是缺…...

10分钟了解JWT令牌 (JSON Web)

10分钟了解JSON Web令牌(JWT) JSON Web Token(JWT)是目前最流行的跨域身份验证解决方案。今天给大家介绍JWT的原理和用法。 1.跨域身份验证 Internet服务无法与用户身份验证分开。一般过程如下。 1.用户向服务器发送用户名和密码。…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

什么是EULA和DPA

文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

c# 局部函数 定义、功能与示例

C# 局部函数:定义、功能与示例 1. 定义与功能 局部函数(Local Function)是嵌套在另一个方法内部的私有方法,仅在包含它的方法内可见。 • 作用:封装仅用于当前方法的逻辑,避免污染类作用域,提升…...

从物理机到云原生:全面解析计算虚拟化技术的演进与应用

前言:我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM(Java Virtual Machine)让"一次编写,到处运行"成为可能。这个软件层面的虚拟化让我着迷,但直到后来接触VMware和Doc…...

第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)

第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10pip3.10) 一:前言二:安装编译依赖二:安装Python3.10三:安装PIP3.10四:安装Paddlepaddle基础框架4.1…...

【若依】框架项目部署笔记

参考【SpringBoot】【Vue】项目部署_no main manifest attribute, in springboot-0.0.1-sn-CSDN博客 多一个redis安装 准备工作: 压缩包下载:http://download.redis.io/releases 1. 上传压缩包,并进入压缩包所在目录,解压到目标…...