【JavaSE】数据类型和运算符
前言
从这一篇我们开始Java的学习~
![]()
欢迎关注个人主页:逸狼
创造不易,可以点点赞吗~
如有错误,欢迎指出~
目录
前言
Java第一个程序
字面常量
字面常量的分类
结合代码理解
类型转换
类型提升
byte与byte的运算
正确写法
字符串类型String
int与String相互转换
int转String
String转int
算术运算符
加减乘除模(+ - * / %)
+加
/ 除
%取余
小数也可以%
增量运算符 += -= *= %=
自增/自减运算符 ++ --
关系运算符 == != < > =
逻辑运算符&& || !
逻辑与&&
逻辑或||
逻辑非!
短路
位运算符
按位与&
按位与|
按位取反 ~
按位异或
条件运算符
移位运算
Java第一个程序
public class Helloworld { //快捷键main 或者首字母psvm创建main方法public static void main(String[] args) {System.out.println("Hello world!");//快捷键sout}
}
java按类,方法,语句逐级来写
public class Helloworld是类,public static void main(String[] args)是main方法(相当于C语言的main函数,是程序的入口,快捷键是main回车),System.out.println("hello world!");是语句,(相当于C语言的printf函数,意为格式化打印Hello world!,快捷键是sout)
其中一个java文件中只能有一个public修饰的类
字面常量
常量即程序运行期间,固定不变的量。
字面常量的分类
1. 字符串常量:由""括起来的,比如“12345”、“hello”、“你好”。
2. 整形常量:程序中直接写的数字(注意没有小数点),比如:100、1000
3. 浮点数常量:程序中直接写的小数,比如:3.14、0.49
4. 字符常量:由 单引号 括起来的单个字符,比如:‘A’、‘1’
5. 布尔常量:只有两种true和false
6. 空常量:null
在Java中数据类型主要分为两类:基本数据类型和引用数据类型。 基本数据类型有四类八种: 1. 四类:整型、浮点型、字符型以及布尔型
结合代码理解
public class Helloworld {public static void main(String[] args) {//整形//int类型不管在多少位的机器上都是4字节//Integer是包装类,简单理解为int类型的plus版本System.out.println(Integer.MAX_VALUE);//输出int最大值2147483647System.out.println(Integer.MIN_VALUE);//输出int最小值-2147483648//局部变量 没有初始化会报错//java会检查字面值 超过会报错int c=2147483647;//int类型范围2^31~2^31-1int d=c+1;System.out.println(d);//长整形long x=10L;//long类型的范围2^63~2^63-1,后面加上L(不建议l),表示当前10是long类型//8字节 64bit//Long是包装类,简单理解为long类型的plus版本System.out.println(Long.MAX_VALUE);//输出long最大值9223372036854775807System.out.println(Long.MIN_VALUE);//输出long最小值-9223372036854775808//短整型short/** 2个字节 -2^15~2^15-1* */short s=10;System.out.println(s);System.out.println(Short.MAX_VALUE);//32767System.out.println(Short.MIN_VALUE);//-32768//byte 1个字节 -128~127byte b=100;System.out.println(b);System.out.println(Byte.MAX_VALUE);//127System.out.println(Byte.MIN_VALUE);//128//字符型char 2字节//unicode字符集 包含了阿拉伯文,汉字,ASCII表等char ch='逸';char ch1=97;//可以给值正整数,输出ASCII对应字符aSystem.out.println(ch1);//包装类型是Character//单精度浮点型float,4字节float f=12.5f;//要加上f,否则会被认为是double类型的数据,报错System.out.println(f);//双精度浮点型double 8个字节(在任何系统都是)//在内存中存储与整形不同,也遵循IEEE754标准,所以浮点数是近似值,不是精确值double num=1.1;System.out.println(num*num);//输出1.2100000000000002//包装类型是Double//布尔类型 没有明确的大小,不能和其他类型的值相互转换,不存在1真0假boolean flg=true;System.out.println(flg);//包装类型是Boolean}
}
其中包装类型 是基本数据对应的类 类型
类型转换
代码不需要经过任何处理,在代码编译时,编译器会自动进行处理。
特点:数据范围小的转为数 据范围大的时会自动进行。
int a=10;//4
long b=100L;//8
//b=a 可以通过编译 编译器自动类型提升
//a=b 会报错,需要强制类型转换,a=(int)b,缺点:可能会有数据丢失
//不相干类型的数据不能相互转换
类型提升
byte与byte的运算
byte a = 10;
byte b = 20;
byte c = a + b;
System.out.println(c);
byte 和 byte 都是相同类型, 但是出现编译报错. 原因是, 虽然 a 和 b 都是 byte, 但是计算 a + b 会先将 a 和 b 都提升成 int, 计算结果也是 int, 赋给 c, 就会出现上述错误. 由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据. 为了硬件上实现方便, 诸如 byte 和 short 这种低于 4 个字节的类型, 会先提升成 int, 再参与计算.
正确写法
byte a = 10;
byte b = 20;
byte c = (byte)(a + b);
System.out.println(c);
字符串类型String
String不是包装类型,是引用数据类型。
public static void main(String[] args) {String str1="Hello ";String str2="world!";//+意为拼接String str3=str1+str2;System.out.println(str3);}
int与String相互转换
int转String
int num = 10;
// 方法1
String str1 = num + "";
// 方法2
String str2 = String.valueOf(num);
String转int
其中被转换的数字必须是合法的数字字符串,比如“100a200"就不行
String str = "100";
int num = Integer.parseInt(str);
算术运算符
加减乘除模(+ - * / %)
+加
两侧操作数类型不一致时,向类型大的提升
System.out.println(1+0.2); // +的左侧是int,右侧是double,在加之前int被提升为double// 故:输出1.2
/ 除
做除法和取模时,右操作数不能为0
public static void main(String[] args) {System.out.println(5/2);//2System.out.println(5.0/2);//2.5System.out.println(5/0);//报错System.out.println(5.0/0);//Infinity}
%取余
public static void main(String[] args) {System.out.println(9%2);//1System.out.println(9%-2);//1System.out.println(-9%2);//-1System.out.println(-9%-2);//-1}
小数也可以%
System.out.println(11.5%2);//1.5
增量运算符 += -= *= %=
例如+=,其他以此类推
int a = 1;
a += 2; // 相当于 a = a + 2
System.out.println(a); // 输出3
自增/自减运算符 ++ --
++是给变量的值+1,--是给变量的值-1。
分前置和后置,
以++举例,比如b=++a (前置),表示a先+1,再赋值给b
而b=a++(后置),表示先赋值给b,a再+1
关系运算符 == != < > =
其计算结果是 true 或者 false 。
int a = 10;
int b = 20;
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
逻辑运算符&& || !
运算结果都是 boolean类型,表达式必须是boolean类型的结果。
逻辑与&&
表达式1 && 表达式2
有一个为假,表达式为假
逻辑或||
表达式1 || 表达式2
有一个为真,表达式为真
逻辑非!
!表达式
假变真,真变假
短路
第一个表达式成立,就不会执行第二个表达式
System.out.println(10 > 20 && 10 / 0 == 0); // 打印 false
System.out.println(10 < 20 || 10 / 0 == 0); // 打印 true
位运算符
按位与&
有0则为0,可理解为乘法
按位与|
有1则为1,可理解为加法
按位取反 ~
1变0,0变1
按位异或
同为0,异为1
条件运算符
条件运算符只有一个: 表达式1 ? 表达式2 : 表达式3
当 表达式1 的值为真 时, 整个表达式的值为 表达式2 的值
为假,则表达式3
// 求两个整数的最大值
int a = 10;
int b = 20;
int max = a > b ? a : b;
移位运算
位运算的 速度 比普通的加减乘除更快
1. 左移<< 最左侧位去掉, 最右侧补 0,相当于乘法
2. 右移 >>最右侧位去掉, 最左侧补 符号位,相当于除法
3.无符号右移>>>最右侧位去掉, 最左侧补0
相关文章:

【JavaSE】数据类型和运算符
前言 从这一篇我们开始Java的学习~ 欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 前言 Java第一个程序 字面常量 字面常量的分类 结合代码理解 类型转换 类型提升 byte与byte的运算 正确写法 字符串类型St…...

Docker 哲学 - ip 的组成规则 与 网关介绍
在 IP 地址中,我们通常将 IP 地址分为两部分:网络部分和主机部分。网络部分用于标识网络,主机部分用于标识该网络中的特定主机。 IP 地址的每个部分(也被称为一个八位组或一个字节)可以是从0到255的任何值。 一个 IPv4…...

数学建模竞赛真的是模型解题一般,但是论文出彩而获奖的吗?
最近,数乐君发现有同学会有这样的问题:在数学建模国赛中,会因为参赛团队的模型解题一般,但论文写得非常精彩而获奖吗? 是的,确实会存在这样的情况。 我们都知道数学建模竞赛最终都是以提交成品论文的形式…...

深度学习常见的三种模型
深度学习模型实际上是一个包含多个隐藏层的神经网络,目前主要有卷积神经网络(CNN)、深度置信网络(DBN)、循环神经网络(RNN)。 1) 卷积神经网络 在机器学习领域,卷积神经网络属于前…...

接口自动化测试分层设计与实践总结
🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号:互联网杂货铺,回复1 ,免费获取软件测试全套资料,资料在手,涨薪更快 接口测试三要素: 参数构造 发起请求&#x…...

集合(下)Map集合的使用
文章目录 前言一、Map接口二、Map接口的实现类 1.HashMap类2.TreeMap类总结 前言 Map集合没有继承Collection接口,不能像List集合和Set集合那样直接使用Collection接口的方法。Map集合其自身通过以key到value的映射关系实现的集合,也有相应的许多方法。类…...

AAPT: error: resource android:attr/dialogCornerRadius not found.
ERROR:D:\android.gradle\caches\transforms-3\b3b98118f65da38d0ad9da84cfc70a72\transformed\appcompat-1.0.0\res\values-v28\values-v28.xml:5:5-8:13: AAPT: error: resource android:attr/dialogCornerRadius not found. 请帮我看看这个错误是什么意思。我改如何做。 这个…...

数字功放VS模拟功放,选择适合你的音频解决方案
数字功放和模拟功放是音频系统中常用的两种功放技术,适用于不同的音频应用,都具有各自的优势和特点。本文将为您详细介绍数字功放和模拟功放的差异,并帮助您找到适合自己的音频解决方案。 1、数字功放是一种利用数字信号处理技术的功放。它将…...

5.88 BCC工具之tcpsynbl.py解读
一,工具简介 tcpsynbl工具以直方图的形式显示SYN到达时的TCP SYN积压大小。这可以让我们了解应用程序距离达到积压限制并丢弃SYN(导致SYN重传产生性能问题)还有多远。 TCP SYN 数据包则通常用于启动 TCP 三次握手过程的第一次握手。 二,代码示例 #!/usr/bin/env python…...

GVRP实现vlan的自动创建和注册
拓扑图 资源已上传 流程 第一、每台交换机的全局及端口下使能GVRP功能 第二、配置交换机的二层连通性,交换机某些端口配置Trunk端口,并允许相应的vlan通过 第三、在交换机4和5配置静态vlan100,然后查看1和3交换机是否有vlan100的定义&…...

Oracle VM VirtualBox修改磁盘大小
一、 修改虚拟机磁盘大小 先把虚拟机停掉。再增加磁盘大小。 路径中有空格的用""包起来。 D:\Program Files\Oracle\VirtualBox>VBoxManage.exe modifyhd "D:\Program Files\VirtualBox VMs\mycentos\mycentos.vdi" --resize 30000 0%...10%...20%...3…...

【嵌入式硬件】步进电机
1.步进电机简介 1.1步进电机基本原理 步进电机的英文是stepping motor。step的中文意思是行走、迈步。所以仅从字面上我们就可以得知,步进电机就是一步一步移动的电动机。说的官方一点儿,步进电机是一种将电脉冲信号转换成相应角位移或者线位移的电动机(直线电机)。下图为…...

FlyControls 是 THREE.js 中用于实现飞行控制的类,它用于控制摄像机在三维空间中的飞行。
demo演示地址 FlyControls 是 THREE.js 中用于实现飞行控制的类,它用于控制摄像机在三维空间中的飞行。 入参: object:摄像机对象,即要控制的摄像机。domElement:用于接收用户输入事件的 HTML 元素,通常…...

【Java程序设计】【C00366】基于(JavaWeb)Springboot的纹理生产图片系统(有论文)
TOC 博主介绍:java高级开发,从事互联网行业六年,已经做了六年的毕业设计程序开发,开发过上千套毕业设计程序,博客中有上百套程序可供参考,欢迎共同交流学习。 项目简介 项目获取 🍅文末点击卡片…...

编译原理Lab. 1 初代编译器实验说明和要求
目录 Lab. 1 初代编译器实验说明和要求一、初代编译器功能描述二、初代编译器文法要求三、初代编译器测试样例四、初代编译器提交要求五、初代编译器实验测试框架说明 代码与思路 Lab. 1 初代编译器实验说明和要求 一、初代编译器功能描述 初代编译器将 C 语言顺序语句序列翻…...

python判断工作日,节假日
一、概述 需要判断一个日期是否为工作日,节假日。 找到一个现成的插件,蛮好用的。 插件介绍 https://pypi.org/project/chinesecalendar/ 判断某年某月某一天是不是工作日/节假日。 支持 2004年 至 2020年,包括 2020年 的春节延长。 兼容…...

练习4-权重衰减(李沐函数简要解析)
环境:练习1的环境 代码详解 0.导入库 import torch from torch import nn from d2l import torch as d2l1.初始化数据 这里初始化出train_iter test_iter 可以查一下之前的获取Fashion数据集后的数据格式与此对应 n_train, n_test, num_inputs, batch_size 20, 100, 200, …...

websocket 中 request-line 中的URI编码问题
首先,request-line组成如下: Request-Line Method SP Request-URI SP HTTP-Version CRLF 在 rfc6455 规范的 5.1.2 Request-URI 中,有这样的描述: The Request-URI is transmitted in the format specified in section 3.2.1. …...

为何ChatGPT日耗电超50万度?
看新闻说,ChatGPT每天的耗电量是50万度,国内每个家庭日均的耗电量不到10度,ChatGPT耗电相当于国内5万个家庭用量。 网上流传,英伟达创始人黄仁勋说:“AI的尽头是光伏和储能”,大佬的眼光就是毒辣ÿ…...

__init__.py 的作用
在 Python 中,包含一个名为 __ init __.py 的文件的目录被称为一个包(package)。 __ init __.py 文件的作用有以下几点: 指示包含该文件的目录是一个 Python 包:当 Python 导入一个包时,会查找该包所在目录…...

Redis到底是多线程还是单线程?
Redis6.0之前:是单线程模式。 Redis6.0之后:Redis的IO线程是多线程,worker线程是单线程。 Redis6.0之前:单线程 Redis6.0之后:Redis的IO线程是多线程,worker线程是单线程。...

JAVA 100道题(18)
18.实现一个除法运算的方法,能够处理被除数为零的情况,并抛出异常。 在Java中,你可以创建一个除法运算的方法,该方法接受两个整数作为参数,分别代表被除数和除数。如果被除数为零,你可以抛出一个自定义的异…...

【C++】每日一题 137 只出现一次的数字
给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。 #include <vector>int singleNumber(std::vecto…...

RAG进阶笔记:RAG进阶
1 查询/索引部分 1.1 层次索引 创建两个索引——一个由摘要组成,另一个由文档块组成分两步进行搜索:首先通过摘要过滤出相关文档,接着只在这个相关群体内进行搜索 1.2 假设性问题 让LLM为每个块生成一个假设性问题,并将这些问…...

《论文阅读》带边界调整的联合约束学习用于情感原因对提取 ACL 2023
《论文阅读》带边界调整的联合约束学习用于情感原因对提取 前言简介Clause EncoderJoint Constrained LearningBoundary Adjusting损失函数前言 亲身阅读感受分享,细节画图解释,再也不用担心看不懂论文啦~ 无抄袭,无复制,纯手工敲击键盘~ 今天为大家带来的是《Joint Cons…...

【微服务】接口幂等性常用解决方案
一、前言 在微服务开发中,接口幂等性问题是一个常见却容易被忽视的问题,同时对于微服务架构设计来讲,好的幂等性设计方案可以让程序更好的应对一些高并发场景下的数据一致性问题。 二、幂等性介绍 2.1 什么是幂等性 通常我们说的幂等性&…...

RocketMQ学习笔记:零拷贝
这是本人学习的总结,主要学习资料如下 马士兵教育rocketMq官方文档 目录 1、零拷贝技术1.1、什么是零拷贝1.2、mmap()1.3、Java中的零拷贝 1、零拷贝技术 1.1、什么是零拷贝 使用传统的IO,从硬盘读取数据然后发送到网络需要经过四个步骤。 通过DMA复…...

3.26日总结
1.Fliptile Sample Input 4 4 1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1 Sample Output 0 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 题意:在题目输入的矩阵,在这个矩阵的基础上,通过最少基础反转,可以将矩阵元素全部变为0,如果不能达…...

应用日志集成到ElasticSearch
1、阿里云sls平台集成日志 阿里sls集成日志步骤 2、filebeat 收集到指定es 安装docker容器 Docker安装 拉取镜像: docker pull elastic/filebeat:7.5.1启动: docker run -d --namefilebeat elastic/filebeat:7.5.1拷贝容器中的数据文件到宿主机&a…...

MySQL多表联查函数
1 多表联查 1.1 表之间的关系 表和表的关系有: 一对一 老公 --> 老婆 , 人 ---> 身份证/户口本 一对多 皇帝 --> 妻妾 , 人 ---> 房/车 多对多 订单 --> 商品 1.2 合并结果集 合并结果集,是将多表查询的结果纵向合并 语法: select field1,field2 from t1 un…...