【java】数据类型与变量以及操作符

news2024/12/23 18:15:22

各位看官:如果您觉得这篇文章对您有帮助的话
欢迎您分享给更多人哦
感谢大家的点赞收藏评论,感谢您的支持
c74aa267346f4a60b3edbe51bce6243b.png!!!

目录

一.字面变量:

二:数据类型

1.1:int类型:(整数赋值默认为int类型)

1.2:长整型

1.3:短整型和字节型变量:同上

2:char:

3:float和double

4:boolean(无明确规定几个字节)

5:类型转换:自动类型转换(隐式)和强转(显式)

6:字符串类型

1. int 转成 String

2. String 转成 int

三:操作符

1:基本运算符除号和取模比较重要(/和%)

2:增量运算符:(若两侧类型不一样有默认强转的效果)

3: 自增/自减运算符 ++ --(注意前置和后置就好了)

4:关系运算符 主要有六个: == != < > <= >= ,其计算结果是 true 或者 false 

5. 逻辑运算符(各个表达式都必须是布尔表达式)

6:位运算符:& | ~ ^

7:移位操作符

上述就是【java】数据类型与变量以及运算符的全部内容了, 欢迎各位大佬评论区留言修正您的支持就是我最大的力​​​​编辑​编辑


一.字面常量

System.Out.println("Hello World"); 语句,不论程序何时运行,输出的都是Hello
World,其实"Hello World"就是字面常量。
常量即程序运行期间,固定不变的量称为常量
我没有定义变量把他存储进去,而是自直接把他打印出来(直接使用)
public class Demo{
public static void main(String[] args){
System.Out.println("hello world!");
System.Out.println(100);
System.Out.println(3.14);
System.Out.println('A');
System.Out.println(true);
System.Out.println(false);
}
}
1. 字符串常量:由""括起来的,比如“12345”、“hello”、“你好”。
2. 整形常量:程序中直接写的数字(注意没有小数点),比如:100、1000
3. 浮点数常量:程序中直接写的小数,比如:3.14、0.49
4. 字符常量:由单引号 括起来的当个字符,比如:‘A’、‘1’
5. 布尔常量:只有两种true和false
6. 空常量,null
注意: 字符串、整形、浮点型、字符型以及布尔型,在Java中都称为数据类型。

二:数据类型

在Java中数据类型主要分为两类: 基本数据类型 和  引用数据类型
基本数据类型有四类八种:
1. 四类:整型、浮点型、字符型以及布尔型(这四大类又分为八小类)

7076c7099f5640cfb8d24e35ae63e2db.png

1.1:int类型:(整数赋值默认为int类型)

在java里面int都是有符号整形

在java里面定义变量一定要给他设置一个初值不然就会报错

integer是int的包装类可以理解为int的包装类,就是int的plus版本

方式一:在定义时给出初始值
int a = 10;
System.Out.println(a);
 方式二:在定义时没有给初始值,但使用前必须设置初值(在java里面定义变量一定要给他设置一个初值不然就会报错)
int b;
b = 10;
System.Out.println(b);
int型变量所能表示的范围:
System.Out.println(Integer.MIN_VALUE);
System.Out.println(Integer.MAX_VALUE);

1.2:长整型

int a = 10;
long b = 10; // long定义的长整型变量
long c = 10L; // 为了区分int和long类型,一般建议:long类型变量的初始值之后加L或者l
long d = 10l; // 一般更加以加大写L,因为小写l与1不好区分
long型变量所能表示的范围:这个数据范围远超过 int 的表示范围. 足够绝大部分的工程场景使用.
范围:
System.Out.println(Long.MIN_VALUE);
System.Out.println(Long.MAX_VALUE);

1.3:短整型和字节型变量:同上

2:char:(两个字节)

char无负数(字符嘛)和C语言不一样

char c1 = 'A'; // 大写字母
char c2 = '1'; // 数字字符
// 注意:java中的字符可以存放整形
char c3 = '帅';(一个中文两个字节,用单引号包起来)

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

执行 javac 的时候可能出现以下错误:

Test.java:3: 错误: 未结束的字符文字
char ch = '鍛?';
^
此时我们在执行 javac 时加上 -encoding UTF-8  (具体原因可看我上一节的内容)选项即可
关于字符编码方式的讨论, 参见
https://zhuanlan.zhihu.com/p/35172335


3:float和double

赋值浮点数时不加后缀 f 默认为double类型(8个字节的内容在4个字节里面放不下,会报错)
double d = 3.14;
System.Out.println(d);


double num = 1.1;
System.out.println(num * num); // 输出1.21吗?
// 执行结果
1.2100000000000002

这里就是C语言的浮点数存储了,浮点数并不是精确保存的

System.Out.println(Double.MIN_VALUE);并不是负数,而是一个超级小的浮点数

4:boolean(无明确规定几个字节)

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

注意事项:
1. boolean 类型的变量只有两种取值, true 表示真, false 表示假.
2. Java 的 boolean 类型和 int 不能相互转换, 不存在 1 表示 true, 0 表示 false 这样的用法
boolean value = true;
System.out.println(value + 1);
// 代码编译会出现如下错误

Test.java:4: 错误: 二元运算符 '+' 的操作数类型错误
System.out.println(value + 1);
^
第一个类型: boolean
第二个类型: int
1 个错误

5:类型转换:自动类型转换(隐式)和强转(显式)

自动类型转换即: 代码不需要经过任何处理,在代码编译时,编译器会自动进行处理。特点: 数据范围小的转为数 据范围大的时会自动进行。(向上转换)
强制类型转换:当进行操作时,代码需要经过一定的格式处理(一般是我们自己处理)
System.Out.println(1024); // 整型默认情况下是int
System.Out.println(3.14); // 浮点型默认情况下是double
int a = 100;
long b = 10L;
b = a; // a和b都是整形,a的范围小,b的范围大,当将a赋值给b时,编译器会自动将a提升为long类型,然后赋值
a = b; // 编译报错,long的范围比int范围大,会有数据丢失,不安全
int c=a+b;(也会报错,数据先转换成Long进行运算,整体就是Long类型了,你要是还想用int接收就应该   int c=(a+b);
同理:
float f = 3.14F;
double d = 5.12
byte b1 = 100; // 100默认为int,没有超过byte范围,隐式转换
byte b2 = (byte)257; // 257默认为int,超过byte范围,需要显示转换,否则报错
同时:
byte b1 = 17; byte b2 = 18;byte b3 =b1 + b2; 也会报错
原因就是整型默认情况下是int(这是开头我说的)(17,18都被默认为int了)
但是这样可以 byte b3 = (byte)(b1+b2)
布尔类型不能和任何类型相互转换
int a=0;
boolean flag = true;
a = flag; // 编译失败:类型不兼容
flag = a; // 编译失败:类型不兼容
最后(需要注意的是):
1. 如果需要把范围大的类型赋值给范围小的, 需要强制类型转换, 但是 可能精度丢失
2. 强制类型转换不一定能成功,不相干的类型不能互相转换(一般指boolean类型)
3. 对于 short, byte 这种比 4 个字节小的类型, 会先提升成 4 个字节的 int , 再运算

6:字符串类型

public static void main(String[] args) {
String s1 = "hello";
System.out.println(s1);
System.out.println(s1+s2); // s1+s2表示:将s1和s2进行拼接
}
在有些情况下,需要将字符串和整形数字之间进行转换

1. int 转成 String

int a = 10;
// 方法1
String str1 = a + "hello";直接加一个""也行
System.out.println(a +"hello");
// 方法2
int a =100;
String str2 = String.valueOf(a);
看输出什么?
 String s1= 10+20+"x";
 String s2="x"+10+20;
 System.out.println(s1);
 System.out.println(s2);

30x
x1020

从左向右运算(拼接注意先后顺序)

2. String 转成 int

String str = "100";
int num = Integer.parseInt(str);
System.out.println(num+1);

三:操作符

1: 基本四则运算符:加减乘除模(+ - * / %)

2: 增量运算符 += -= *= %=

3: 自增/自减运算符 ++ --

4:关系运算符 主要有六个: == != < > <= >= ,其计算结果是 true 或者 false 

5:逻辑运算符:&& || !

6:位运算符:& | ~ ^

1:基本运算符除号和取模比较重要(/和%)

除号:
int a = 3;
int b = 2;
System.out.println(a / b);结果为1,和C语言一样,两边至少有一个是浮点数才会生成浮点数
另外:做除法和取模时,右操作数不能为0
int a = 1;
int b = 0;
System.out.println(a / b)
取模:
取模:% 不仅可以对整型取模,也可以对double类型取模,但是没有意义,一般都是对整型取模的
System.out.println(11.5 % 2);
// 运行结果
1.5
两侧操作数类型不一致时,向类型大的提升
两侧操作数类型不一致时,向类型大的提升:
System.out.println(1+0.2); // +的左侧是int,右侧是double,在加之前int被提升为double
// 故:输出1.2

2:增量运算符:(若两侧类型不一样有默认强转的效果)

int a = 1;
a += 2; // 相当于 a = a + 2
System.out.println(a); // 输出3
强转效果:
        int a = 10;
        long b =20;
        a +=b;
        按理说,上面讲的a应该整形提升和b一样的long类型但是这个+=运算符具有强转的能力
相当于 a=(int)(a+b);

但是:

long b=10;

int a+=b;也会报错

这样的语句本身是一个合法的赋值操作,但问题出现在你试图在声明变量b的同时使用这种复合赋值操作符(+=)。在Java中,你不能在变量的声明语句中直接使用复合赋值操作符(如+=-=等)来同时声明和初始化变量。

就是这个意思
long b = 10;  
int a += b;  // 这里会报错,因为不能在声明变量时直接使用复合赋值操作符  
a += b;      // 这里不会报错,因为此时a已经被声明并可能已经被初始化了

3: 自增/自减运算符 ++ --(注意前置和后置就好了)

4:关系运算符 主要有六个: == != < > <= >= ,其计算结果是 true 或者 false 

int a = 10;
int b = 20;
// 注意:在Java中 = 表示赋值,要与数学中的含义区分
// 在Java中 == 表示相等
System.out.println(a == b); // false
System.out.println(a != b); // true
System.out.println(a < b); // true
System.out.println(a > b); // false
System.out.println(a <= b); // true
System.out.println(a >= b); // false

注意:当需要多次判断时,不能连着写,比如:3 < a < 5,Java程序与数学中是有区别的

5. 逻辑运算符(各个表达式都必须是布尔表达式)

语法规则:表达式1 && 表达式2,左右表达式必须是boolean类型的结果
(具体都和C一样小编就不多赘述了)
但是重点:& 和 | 如果表达式结果为 boolean 时, 也表示逻辑运算. 但与 && || 相比, 它们不支持短路求值.
 boolean b=(10 < 20 & 10 > 20 ) ;
        System.out.println(b);

就譬如这样本来短路就是true了,但是这个 & 操作符两边都是布尔表达式时虽然和 && 差不多
但是不同的地方就在这,它不仅两边的表达式都要检查(代码的合理性也要检查哦)
System.out.println(10 < 20 & 10 / 0 == 0);不合理就会报错
(代码的合理性也要检查哦)

6:位运算符:& | ~ ^

和C语言一样小编就不过多赘述了

但是有一个点

int a = 0xf;
System.out.printf("%x\n", ~a);

结果为 ffff  fff0 ,int 为32位的

7:移位操作符

<<(左移),

>>(右移)(最左侧补符号位),

>>>(无符号右移)(最左侧一律补0)

没有<<<这个符号

无符号右移 >>>: 最右侧位不要了, 最左侧补 0.
int a = 0xffffffff;
System.out.printf("%x\n", a >>> 1);
// 运行结果(注意, 是按十六进制打印的)
7fffffff

最后注意:

1. 左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方.
2. 右移 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方.
3. 由于计算机计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代替.
4. 移动负数位或者移位位数过大都没有意义.

上述就是【java】数据类型与变量以及运算符的全部内容了,
 欢迎各位大佬评论区留言修正
您的支持就是我最大的力​​​
bcb51650eac54f748f693cdc5b00f9a6.png2d8b40093abe47c7b347cdd7c906e87f.gif

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高速机器人的点动与直线运动

工业机器人中的点动和直线运动非常之重要&#xff0c;接下来说一下他们的实现过程。 点动&#xff1a; 点动包括两个部分&#xff0c;第一个点动是每一个关节电机的点动&#xff0c;第二个是机器末端向xyz的三个方向进行点动处理。 第一个点动是非常简单的&#xff0c;即把对…

IO系列-3 NIO基本概念:Buffer和Channel和Selector

1.缓冲区 1.1 Buffer类介绍 java在BIO中通常使用字节数组byte[]和字符数组char[]实现数据传输&#xff0c;在NIO中&#xff0c;引入了缓冲区Buffer进行数据传输&#xff0c;相对数组提供了更多的属性和API.Buffer在java.nio包中引入&#xff0c;Buffer对于常见的类型有对应的…

【C++指南】类和对象(二):类的默认成员函数——全面剖析 :构造函数

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《C指南》 期待您的关注 ​ 阅读本篇文章之前&#xff0c;你需要具备的前置知识&#xff1a;类和对象的基础 点击下方链接 【C指南…

Stable Diffusion的核心插件—ControlNet!万字长文解读!

前言 一、介绍 论文地址&#xff1a;[https://arxiv.org/abs/2302.05543](https://arxiv.org/abs/2302.05543 "https://arxiv.org/abs/2302.05543")代码地址&#xff1a;[GitHub - lllyasviel/ControlNet: Let us control diffusion models!](https://github.com/ll…

Python和C++胶体粒子三维残差算法模型和细化亚像素算法

&#x1f3af;要点 使用信噪比、对比度噪声比和点扩展函数量化实验数据&#xff0c;增强共聚焦显微镜成像。参考粒子跟踪算法&#xff1a;使用二维和三维径向模型细化亚像素。胶体粒子三维图形分割学习模型模拟检测球形胶体。使用网格搜索优化模型和归一化处理以避免光漂白。 …

idear 控制台乱码、查询结果、参数、控制台乱码

一、 -Dfile.encodingUTF-8 二、 三、 四、 五、

【区间选点】

题目 代码 左端点排序区间合并 #include <bits/stdc.h> using namespace std; #define null -0x3f3f3f3f #define x first #define y second typedef pair<int, int> PII; const int N 1e510; vector<PII> v; int main() {int n;cin >> n;for(int i…

LLM大模型企业应用实战-“消灭”LLM幻觉的利器

大模型一定程度改变了我们生活工作的思考方式&#xff0c;越来越多的个人和企业在思考如何将大模型应用到更加实际的生产生活。 1 LLM的问题 1.1 幻觉 LLM因为是一个预训练模型&#xff0c;它已有一些知识储备&#xff0c;我们提的问题跟他的知识储备不相符时&#xff0c;会…

当管理遇上AI,工作效率翻了3倍!

最近这段时间&#xff0c;很多企业都开始降薪、裁员。 在降本增效的大背景下&#xff0c;企业但凡有什么大动作&#xff0c;压力往往都会转嫁到管理者的身上。 一方面&#xff0c;要调大家的状态&#xff0c;处理团队中的各种琐事&#xff1b;另一方面&#xff0c;要及时响应…

C++ : STL容器之string剖析

STL容器之string剖析 一、string 的迭代器&#xff08;一&#xff09;起始迭代器&#xff08;二&#xff09;末尾迭代器&#xff08;三&#xff09;反向迭代器 二、容量相关的函数&#xff08;一&#xff09;size&#xff08;二&#xff09;capacity&#xff08;三&#xff09;…

Unity3d使用JsonUtility.FromJson读取json文件

使用JsonUtility.FromJson方法不需要额外引用第三方库。该方法只能读取json对象&#xff0c;而不能读取json数组。 假如我们有如下的json数组&#xff1a; [ {"id":1, "name":"first2021", "level":5, "score":100, "…

cefsharp129.0.110(CEF 129.0.11,Chromium 129.0.6668.90)版本体验

一、依赖包 1.1 CefSharp.WinForms CefSharp.WinForms .NET Framework:net462 net462 is compatible. net463 net463 was computed. net47 net47 was computed. net471 net471 was computed. net472 net472 was computed. net48 net48 was computed. net481 1.2 CefSharp.…

JAVA思维提升

利用java做一个双色球彩票系统 要求 package ZY; import java.util.Random; import java.util.Scanner; public class Test9双色球 { //目标&#xff1a;模拟双色球//规则投注号码由6个红色球号码和1个蓝色球号码组成。红色球号码从1-33中选择;蓝色球号码从1-16中选择。publi…

springboot网站开发-解决web前端请求的一个错误

springboot网站开发-解决web前端请求的一个错误&#xff01;近期在开发网站时&#xff0c;web页面&#xff0c;点击金币结算按钮时&#xff0c;一直报错&#xff0c;说金币余额不足。经过使用浏览器自带的js调试插件&#xff0c;一步一步跟踪调试&#xff0c;发现了原因。是漏写…

程计软题3-编译程序基本原理

(一)词法分析的工具-正规式 题1-语句找表达式 1. 排除法 对于A&#xff1a;a*取0个a&#xff0c;&#xff08;a&#xff09;*取1个a,b*取b,A例可取ab,不满足题目 对于C:取ba*取b,a*取1个a&#xff0c;&#xff08;b&#xff09;*,取ab&#xff0c;不满足题目 对于D:&#xff…

360桌面助手意见反馈

360桌面助手收纳盒和映射文件夹互转需求 现有方式 收纳盒 桌面新建收纳盒后, 可以在收纳盒内, 增加文件 映射文件夹 首先磁盘新建文件夹, 然后复制文件夹路径, 然后桌面右键, 新建映射文件夹, 把路径放进去, 实现闭合 存在的问题 收纳盒问题 桌面收纳盒过多后, 直接解散…

ArcGIS实战——一文教会你调整适合中国宝宝体质的标准地图投影参数

各位要出图的小伙伴有没有遇到一个问题&#xff0c;当我们的研究区域是中国时&#xff0c;使用常见的WGS1984投影&#xff0c;会让我们的中国地图看起来不够挺拔&#xff0c;投影使得左右的拉伸比较长&#xff0c;进而让我们的中国地图变得不够美观。就像下面这样子&#xff0c…

stable diffusion各种插件及模型、教程

stable diffusion各种插件及模型、教程 下载地址&#xff1a;https://s.tb.cn/c.0Efdko

31 基于51单片机的水位监测系统仿真

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机&#xff0c;DHT11温湿度检测&#xff0c;水位检测&#xff0c;通过LCD1602显示&#xff0c;超过阈值报警&#xff0c;继电器驱动电机转动。通过矩阵按键切换选择设置各项参数阈值。 …

手机地址IP显示不对?别急,这里有解决方案

在当今的数字化生活中&#xff0c;手机已成为我们连接世界的重要工具。而手机的IP地址&#xff0c;作为我们在网络上的“身份证”&#xff0c;其准确性对于网络体验至关重要。然而&#xff0c;有时我们可能会遇到手机IP地址显示不正确的问题&#xff0c;这不仅会影响网络连接质…