Java---数据类型与变量

1.字面常量

字面常量就是我们经常所说的常量,常量即在程序运行期间,固定不变的量。且常量是无法改变的,如果我们的代码有改变常量的操作,程序就会报错。

1.1字面常量的分类

字符串常量,整型常量,浮点数常量,字符常量,布尔常量(只有true和false两种),空常量(NULL)。

2.数据类型

在Java中数据中数据类型主要分为两类:基本数据类型和引用数据类型

1,基本数据类型

Java中的基本数据类型由8种,分别为 int,long,short,byte,float,double,char,Boolean。

9707a67bca3d427b9fc7be0f21e8cd9c.png

注意事项

1.无论是在32位系统或者64位系统,int都占用4个字节,long都占用8个字节。相对于C语言,Java程序的可移植性就比较高。

2.整型和浮点型都是有符号类型。

3.整型类型默认为int类型,浮点型默认为double类型。

4.字符串(String)类型属于引用数据类型。

3.变量

在Java程序中,可以改变的量的量就称为变量,而数据类型就是用来定义不同种类的变量。

3.1 整型变量

整型变量有int,long,short,byte四种。

由于与C语言的用法差不多,就不过多介绍了。就说几个注意事项。

1.在定义变量时,一定要给变量赋初值,不然在Java中就会报错。

2.每个整型都有属于自己的包装类,其中int的包装类为Integer,其他整型的包装类都是其首字母变成大写就行了,如long的包装类为Long。

3.每个整型数据类型都有其能够存储的最大值,当我们赋值超过这个最大值时,Java程序会报错。

4.当我们创建一个long类型的变量时,建议在赋值的后面加个l或L,一般加L。如以下代码

public class Demo1 {
    public static void main(String[] args) {
        long a=10L;  //在10后面加个L
    }
}

3.2 浮点型变量

浮点型变量分为float(单精度浮点数)和double(双精度浮点数)两种。

我们在创建float变量的时候,一般在数值后加个f或F。

浮点型的用法和C语言差不多,就不过多介绍了。

介绍一点,我们来看一段代码。

public class Demo1 {
    public static void main(String[] args) {
       double a=1.1;
        System.out.println(a*a);
    }
}

输出值是不是1.21呢?

运行代码

b2c622d6af7946c9a0e2bd04e7cc9e21.png

发现并不是1.21,而是1.2100000000000002。

原因:小数是不能精确表示每一位的,只能说精确到小数点后几位。 

3.3 字符型变量

char为字符型变量。其包装类为Character。

与C语言不同的是,在Java中,char类型大小占用2个字节。

字符型变量可以存储汉字,一个汉字占用2个字节。

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

 3.4 布尔型变量

boolean为布尔类型常量。

1.布尔类型的变量只有true和false两种。true表示真,false表示假。

2.在Java中,布尔类型不能与其他类型变量进行转换。

3.在Java中,不存在1表示true,0表示false的说法。

4.布尔类型至今没有明确规定占用多少个字节。

5.布尔类型的包装类为Boolean。

4.类型转换

Java作为一个强类型编程语言,不同类型之间的变量相互赋值,会有严格的校准。

如以下代码

      int a=10;
      long b=9;
      a=b;

当我们将一个long类型的变脸赋给int类型的时候,程序会报错,因为long类型的大小大于int,int的的大小无法完整得存储long类型得变量,会造成数据精度得丢失。

4.1 自动类型转换(隐式)

自动类型转换即:代码不需要经过任何处理,在代码编译时,编译器会自动进行处理。

e290dcbf1fb044999d79d5960fda1bf5.png

特点:数据范围小得转换为数据范围大的。

aa01949b3dd342cab99831df654342fd.png

4.2 强制类型转换

强制类型转换:当进行操作时,代码需要经过一定的格式处理,不能自动完成。 特点:数据范围大
的到数据范围小。
int a = 10;
long b = 100L;
b = a; // int-->long,数据范围由小到大,隐式转换
a = (int)b; // long-->int, 数据范围由大到小,需要强转,否则编译失败
boolean flag = true;
a = flag; // 编译失败:类型不兼容
flag = a; // 编译失败:类型不兼容
a = d; // 报错,类型不兼容
a = (int)d; // int没有double表示的数据范围大,需要强转,小数点之后全部丢弃
byte b1 = 100; // 100默认为int,没有超过byte范围,隐式转换
byte b2 = (byte)257; // 257默认为int,超过byte范围,需要显示转换,否则报错

需要注意得是,当我们进行强制转换数据类型得时候,在编译方面上讲,它是可以运行的。

但是它是有风险的。看一下代码

public class Demo1 {
    public static void main(String[] args) {
        byte a=10;
        int b=128;
        a=(byte)b;
        System.out.println(a);
    }
}

运行代码

c9cf4754cfa14e2890da55ab22c05e1f.png

 a的值竟然变为-128了,这是为什么呢?

da03d2b4ceb044ceb1e480b4b5751af2.png

由于byte类型的数据类型范围 -128~127,看上图,单我们将128赋值给一个byte类型的变量时,其实就是127+1了,通过上图,127+1就会变成-128了。

5.类型提升

5.1 int与long之间:int会被提升成long

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

5.2 byte与byte的运算

byte a = 10;
byte b = 20;
byte c = a + b;
System.out.println(c);

这段代码是会报错的,原因是:对于short和byte小于4个字节类型的数据进行运算时,会先提升成int,在参与计算。

 6.字符串类型

6.1 字符串拼接

public static void main(String[] args) {
    String s1 = "hello";
    String s2 = " world";
    System.out.println(s1);
    System.out.println(s2);
    System.out.println(s1+s2); // s1+s2表示:将s1和s2进行拼接
}

6.2 int转成String

1f70f7824d744b6eba856e9dac65f14e.png

6.3 String转成int

e62ab887cb14453082877a69b9e5d56e.png

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

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

相关文章

XMind轮播图banner测试点

banner测试点 显示1到5张banner图片 [1,5] 6 1 一张不轮播 5 3 0可选 自动轮播,3秒切换一张 鼠标悬停,不轮播 实心为当前图 点击可以跳转 点击左,切换一张图片 点击右, 切换一张图片…

使用MATLAB/Simulink的PID控制系统设计和自动调整

书籍:Pid Control System Design and Automatic Tuning Using Matlab/Simulink 作者:Liuping Wang 出版:Wiley-IEEE Press 书籍下载-《使用MATLAB/Simulink的PID控制系统设计和自动调整》本书涵盖了具有操作约束的PID控制系统的设计、实施…

Android使用ProtoBuf 适配 gradle7.5 gradle8.0

ProtoBuf 适配 Gradle7.5 gradle-wrapper.properties 配置 distributionUrlhttps\://services.gradle.org/distributions/gradle-7.5-bin.zipProject:build.gradle: plugins {id com.android.application version 7.4.2 apply falseid com.android.library versio…

模拟 枚举 贪心(C++ 题目 代码 注解)

目录 题目一: 题目描述 输入描述: 输出描述: 输入 输出 说明 代码: 题目二: 题目描述 输入描述: 输出描述: 输入 输出 代码: 题目三: 题目描述 输入描述: 输出描述: 输入 输出 输入 输出 输入…

C语言函数指针的使用、函数指针数组及使用、指向函数指针数组的指针,指针进阶版的冒泡排序等介绍

文章目录 前言一、函数指针的使用1. 加减乘除计算器普通实现2. 加减乘除计算机函数指针实现 二、函数指针数组1. 函数指针数组的书写2. 两个有趣的代码3. 函数指针数组的使用 三、指向函数指针数组的指针四、指针进阶_冒泡排序1.整型冒泡排序2. C语言qsort函数3. 仿写C语言qsor…

笔试刷题-Day11

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 一、游游的水果大礼包 题目链接:https://ac.nowcoder.com/acm/problem/255193 类型:求一个表达式的最值(并不是贪心,因为该题条件太少&…

PC 自动化测试入门 - pywinauto 上篇:初识

文章目录 前言PC 自动化测试 是什么?常用 PC 自动化测试工具pywinauto 是什么?Windows上支持的可访问性技术列表 操作记事本自动写入问题app Application(backend"uia").start("notepad.exe") 无法正常启动组件选择器和 print_cont…

clickhouse学习笔记05

ClickHouseSpringBoot2.XMybatisPlus整合搭建 添加需要的依赖: 添加clickhouse依赖: 配置数据库配置: 我们框架就搭建完了。 ClickHouse的项目案例统计需求讲解 ClickHouse的项目案例统计库表和数据准备 添加数据: 数据都插入进来…

算法必备数学基础:图论方法由浅入深实践与应用

作者介绍:10年大厂数据\经营分析经验,现任大厂数据部门负责人。 会一些的技术:数据分析、算法、SQL、大数据相关、python 欢迎加入社区:码上找工作 作者专栏每日更新: LeetCode解锁1000题: 打怪升级之旅 python数据分析…

python 入门第三天(高级进阶:str、set、dict、slice、推导式、高级变量类型的公共语法)

一、字符串str 字符串就是一串字符,是编程语言中表示文本的数据类型 1. 字符串定义 Python中可以使用一对双引号或者一对单引号定义字符串 str1 hello str2 "hello" 2. 获取字符串中元素 和列表一样,字符串也是通过索引获取元素 str …

CentOS7上安装部署Consul服务(小白版)

文章目录 1.Consul服务介绍2.Consul服务下载安装3.Consul服务配置3.1.创建Consul服务的运行用户3.2.下载服务配置生成脚本3.3.配置执行脚本需要的临时变量3.4.生成配置文件3.5.启动测试3.6.开机自启配置 1.Consul服务介绍 Consul 是一种开源的服务网格解决方案,由 …

pytorch库 01 安装Anaconda、Jupyter,Anaconda虚拟环境连接pycharm

文章目录 一、安装Anaconda1、卸载Anaconda(可选)2、下载并安装Anaconda3、配置环境变量4、桌面快捷方式 二、安装 PyTorch(GPU 版)库1、创建虚拟环境,并安装一些常用包2、GPU 基础3、检查驱动4、安装CUDA(…

Linux搭建局域网私有yum仓库/配置本地光盘镜像仓库/搭建公有yum仓库--7700字详谈

帮助与补全功能 1.补全 yum (options)COMMAND check check-update clean deplist downgrade erase fs fssnapshot groups help history info install list makecache provides reinstall repo-pkgs repolist search shell swap update update-minimal …

每周一算法:单源次短路

题目描述 “您的个人假期”旅行社组织了一次比荷卢经济联盟的巴士之旅。 比荷卢经济联盟有很多公交线路。每天公共汽车都会从一座城市开往另一座城市。沿途汽车可能会在一些城市(零或更多)停靠。 旅行社计划旅途从 S S S 城市出发,到 F …

新书速览|ChatGLM3大模型本地化部署、应用开发与微调

实战文本生成、智能问答、信息抽取、财务预警应用开发,掌握ChatGLM3大模型部署、开发与微调技术 01 本书内容 《ChatGLM3大模型本地化部署、应用开发与微调》作为《PyTorch 2.0深度学习从零开始学》的姊妹篇,专注于大模型的本地化部署、应用开发以及微…

挤压激励注意力 SE | Squeeze-and-Excitation Networks

论文名称:《Squeeze-and-Excitation Networks》 论文地址:https://arxiv.org/pdf/1709.01507.pdf 代码地址: https://github.com/hujie-frank/SENet 卷积神经网络 (CNN) 的核心构建块是卷积运算符,它使网络能够通过在每一层的局…

C++ | Leetcode C++题解之第50题Pow(x,n)

题目: 题解: class Solution { public:double quickMul(double x, long long N) {if (N 0) {return 1.0;}double y quickMul(x, N / 2);return N % 2 0 ? y * y : y * y * x;}double myPow(double x, int n) {long long N n;return N > 0 ? qu…

谷歌CEO谈拥有“最好的”AI、1000 种新云产品和Workspace

谷歌首席执行官桑达尔皮查伊 (Sundar Pichai) 在谷歌财报中发表了大胆言论,其中包括将 Workspace 吹捧为网络安全领域的领导者、谷歌云和 YouTube 到今年年底的总运行额将达到 1000 亿美元,以及为什么需要“强大的合作伙伴计划”来推动人工智能发展。 谷…

70、栈-最小栈

思路: 除了最后一个获取最小值以外,其他都可以使用一个栈来实现,但是如果当前一个最小值被移除了,如果获取第二小的值,这个是需要记录的。所以最好的办法是两个栈。一个作为主栈存放数据,一个作为辅栈&…

C++之类和对象

目录 一:再谈构造函数 1.1 构造函数体赋值 1.2 初始化列表 1.3 explicit关键字 二. static成员 2.2 特性 三. 友元 3.1 友元函数 3.2 友元类 四: 内部类 五:匿名对象 六. 再次理解类和对象 一:再谈构造函数 1.1 构造…
最新文章