Java知识点一

hello,大家好!我们今天开启Java语言的学习之路,与C语言的学习内容有些许异同,今天我们来简单了解一下Java的基础知识。

一、数据类型

分两种:基本数据类型 + 引用数据类型

(1)整型

八种基本数据类型包括:整数型:byte(1)、short(2)、int(4)、long(8)

                                        浮点型:float、double

                                        字符型:char

                                        布尔类型:boolean

其中int、long不管在多少位操作系统当中都是4、8个字节,int取值范围 -2^31~2^31-1Integer包装类,可以认为这是一个Int类型的plus版本,没有有/无符号这一说。long占8个字节取值范围 -2^63~2^63-1,长整型变量的初值后要加大/小写的L,long的包装类型是Long。

byte占1个字节位,取值范围 -128~127 ;short占2个字节,取值范围 -2^15 ~ 2^15-1 (-32768~32767)。

计算机内存中的单位有:bit、byte、kb、mb、gb、tb、pb;除了byte—bit是8之外,其余相邻的单位之间都是1024。

public static void main(String[] args) {//数据各个类型的声明方法//字节类型byte x = 100;System.out.println(x);System.out.println(Byte.MAX_VALUE);System.out.println(Byte.MIN_VALUE);//短整型short b = 10;System.out.println(b);System.out.println(Short.MAX_VALUE);//最大值System.out.println(Short.MIN_VALUE);//最小值//整型int c = 10;System.out.println(c);System.out.println(Integer.MAX_VALUE);System.out.println(Integer.MIN_VALUE);//长整型long a = 10L;System.out.println(a);System.out.println(Long.MAX_VALUE);System.out.println(Long.MIN_VALUE);}

 (2)浮点型

double双精度,①在任何系统下都占8个字节,②浮点数和整数在内存中存储方式不同,不可以单纯的用2^n的形式来计算,(具体参考C语言中提到的数据在内存中的存储)③double的包装类为Double。

float单精度,在Java中占4个字节,float的包装类型为Float。同样遵守IEEE 754标准,由于表示的数据精度范围较小,一般在工程上用到浮点数都优先考虑double,不太推荐float。

public static void main(String[] args) {//双精度类型double d = 12.5;System.out.println(d);//单精度类型float f = 12.5f;System.out.println(f);}

(3)字符类型

char不同于C语言的是,他占两个字节,①Java中“单引号+单个字母”表示字符字面值

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

public static void main(String[] args) {//字符型,两个字节//存放字母char ch1 = 'a';char ch2 = 'A';//数字字符char ch3 = '1';//汉字char ch4 = '龙';System.out.println(ch1);}

(4)布尔类型

boolean在Java中不用引用头文件,可以直接使用;没有明确的大小;不能和其他类型转换,不存在1表示true,0表示false,不能进行+-等运算;包装类是Boolean。

public static void main(String[] args) {//布尔类型boolean flg = true;System.out.println(flg);}

二、数据类型之间的相互转换

如上图,将b的值给a会报错,而将a的值给b就不会报错,因为int是4个字节,long是8个字节,如果将long型数据给到int型数据就会造成数据丢失。

(1)自动类型转换(隐式)

即:代码不需要经过任何处理,在代码编译时,编译器会自动进行处理。特点:数据范围小的转化为数据范围大的会自动进行。

(2)强制类型转换(显式转换)

大数据类型转换为小数据类型,当进行操作时,代码需要经过一定的格式处理,不能自动完成。

特点:数据范围大的转换成数据范围小的,但是可能会出现精度丢失,丢掉小数点or数据溢出

(3)小于4字节的类型转换问题

因为CPU在内存中进行读写时,都是按照4个字节来进行读写,所以像byte、char、short在进行运算时,都会先提升为int型后在计算,如下图:

注意事项: 
1.不同数字类型的变量之间赋值,表示范围更小的类型能隐式转换成范围较大的类型

2.如果需要把范围大的类型赋值给范围小的,需要强制类型转换但是可能精度丢失

3.将一个字面值常量进行赋值的时候,Java会自动针对数字范围进行检查

4.强制类型转换不一定能功,不相干的类型不能互相转换 

三、字符串类型

        //字符串String str1 = "hello ";String str2 = "world";String str3 = str1 + str2;System.out.println(str3);

上图代码中的String不是包装类,而是引用数据类型;定义字符串,也可以利用“+”将两个字符串拼接。

有些情况下可以将int->string相互转换:

四、运算符

(1)算术运算符

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

我们来看一组%的运算,自己可以预测一下结果:

System.out.println(9%2);
System.out.println(9%-2);
System.out.println(-9%2);
System.out.println(-9%-2);

我们来看运行结果: 

 符号的正负和运算符前的数字所带符号有关,另外在做“/”和“%”运算时符号右边的数字不能是0。

增量运算符(+=、-=、*=、/=、%=):会自动进行数据类型转换;

系统及提示你进行替换 。

 自增自减运算符(++、--)

【注意】:①如果单独使用,前置++和后置++没有任何区别;

           ②如果混合使用,前置++是先+1后用;后置++是先用值后+1;

           ③只有变量才能使用自增自减运算符,不允许修改的常量不能使用。

(2)关系运算符

关系运算符主要有六个:==、!=、<、>、<=、>=,其计算结果是ture,false。

(3)逻辑运算符(重点)

逻辑运算符:&&与(有假必假)、|| 非(有真即真),两侧必须是布尔表达式。

短路求值法
&&和 || 遵守短路求值的规则:①System.out.println(10>20&&10/0==0); //打印false
                                                ②System.out.println(10<20 || 10/0==0); //打印ture
 我们都知道,计算10/0会导致程序抛出异常,但是上面的代码却能正常运行,说明10/0并没有真正被求值。

【注意】: ①对于&&,如果左侧表达式值为false,则表达式结果一定是 false,无需计算右侧表达式. 
                ②对于 || ,如果左侧表达式值为true,则表达式结果一定是true,无需计算右侧表达式. 
                ③但是&和|如果表达式结果为boolean时,也表示逻辑运算.

                    但与&&和 || 相比,它们不支持短路求值。

(4)位运算符 

在Java中数据存储的最小单位是字节,而数据操作的最小单位是比特位,字节是最小的存储单位,每个字节是由8个二进制比特位组成的,多个字节组合在一起可以表示各种不同的数据。
位运算符主要有四个: &、|、~、^ ,除 ~ 是一元运算符外,其余都是二元运算符。
位操作表示按二进制位运算,计算机中都是使用二进制来表示数据的(01构成的序列),按位运算就是在按照二进制位的每一位依次进行计算。

 

 移位运算符(了解)

移位运算符一共有三个:<<(左移)、>>(右移)、>>>(无符号右移);都是二元运算符,且都是按照二进制比特位来运算的。

 还有一个>>>,这个比较特殊:

【注意】:

1.左移1位,相当于原数字*2.左移N位,相当于原数字*2的N次方.

2.右移1位相当于原数字/2.右移N位,相当于原数字/2的N次方.

3.计算机计算移位效率高于计算乘除,当某个代码正好乘除2的N次方的时候可以用移位运算代替.

4.移动负数位或者移位位数过大都没有意义. 

(5)条件运算符

是Java中唯一一个三目运算符条件表达式:表达式1 ?表达式2:表达式3

我们来看一道例题:

boolean flg = true==true ?(true==false ?true :false) :true;
System.out.printLn(flg);//false

 

(6)运算符优先级

在一条表达式中,各个运算符可以混合起来进行运算,但是运算符的优先级不同,比如: * 和 / 的优先级要高于+ 和-,有些情况下稍不注意,可能就会造成很大的麻烦。

//求a和b的平均值
int x = 10;
int y = 20;
int c = a+(b-a)>>1;
System.out.printLn(c);//10


上述表达式中,由于+的优先级要高于>>,因此a先和b-a的结果做加法,整体为20,最后再进行右移,因此结果为10。
 

今天Java的知识点先分享到这里,小伙伴们可以在评论区留言,点赞支持一下吧!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity 2021.3发布WebGL设置以及nginx的配置

使用unity2021.3发布webgl 使用Unity制作好项目之后建议进行代码清理&#xff0c;这样会即将不用的命名空间去除&#xff0c;不然一会在发布的时候有些命名空间webgl会报错。 平台转换 将平台设置为webgl 设置色彩空间压缩方式 Compression Format 设置为DisabledDecompre…

【kubernetes】二进制部署k8s集群之,多master节点负载均衡以及高可用(下)

↑↑↑↑接上一篇继续部署↑↑↑↑ 之前已经完成了单master节点的部署&#xff0c;现在需要完成多master节点以及实现k8s集群的高可用 一、完成master02节点的初始化操作 二、在master01节点基础上&#xff0c;完成master02节点部署 步骤一&#xff1a;准备好master节点所需…

opengl pyqt 显示文字

目录 效果图 效果图 import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QOpenGLWidgetfrom OpenGL.GL import * from OpenGL.GLUT import * from OpenGL.GLU import *class OpenGLWidget(QOpenGLWidget):def __init__(self, parentNone):super(OpenGLWidget…

【计算机毕业设计】541鲜花商城系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

RabbitMq:什么是RabbitMq? ①

一、RabbitMq定位 RabbitMq是一个基于消息订阅发布的一款消息中间件。 二、技术原理 核心概念 server&#xff1a;又称broker&#xff0c;接受客户端连接&#xff0c;实现AMQP实体服务。缓存代理&#xff0c;Kafka集群中的一台或多台服务器统称broker.connection&#xff1a;…

长短期记忆神经网络

目录 LSTM 神经网络架构 分类 LSTM 网络 回归 LSTM 网络 视频分类网络 更深的 LSTM 网络 网络层 分类、预测和预报 序列填充、截断和拆分 按长度对序列排序 填充序列 截断序列 拆分序列 指定填充方向 归一化序列数据 无法放入内存的数据 可视化 LSTM 层架构 …

springboot+vue项目部署配置开机自启动

1.前端部属 下载nginx解压&#xff0c;在nginx\conf下找到nginx.conf 添加如下代码 server {listen 8081;server_name localhost;charset utf-8;location / {root F:/1ceshi/dist; #前端打包路径try_files $uri $uri/ /index.html;index index.html index.htm;}l…

redis 异步队列

//produceMessage.ts 模拟生产者 import Redis from ioredis; const redis new Redis(); // 生产者&#xff1a;将消息推送到队列 async function produceMessage(queueName:string, message:string) {try {await redis.rpush(queueName, message);console.log(Produced messa…

EasyRecovery2024高级完整个人版免费下载使用

该软件的高级功能和功能选项主要包括以下几个方面&#xff1a; 恢复删除的磁盘分区&#xff1a;EasyRecovery能够快速扫描磁盘&#xff0c;寻找并恢复删除的磁盘分区&#xff0c;无需检索完整磁盘扇区。支持主流的MBR和GPT分区类型&#xff0c;实现安全可靠的分区恢复。恢复格…

Upload-Labs-Linux1【CTF】

拿到这道题目一看&#xff0c;发现是upload靶场&#xff1b;这不简简单单吗&#xff1b;结果中间还是遇到了一些小问题 小坑总结&#xff1a;该关只识别标准php语法&#xff1a;<?php phpinfo()?>格式&#xff1b;即<?php ?> 不识别<? phpinfo()?> &…

Itext生成pdf文件,html转pdf时中文一直显示不出来

之前使用freemark模板渲染ftl页面,转出的pdf中&#xff0c;css2有些样式好像不支持&#xff0c;比较常用的居中样式都没有效果&#xff0c;text-align:center 改造成使用html页面来转pdf&#xff0c;css2的样式可以生效,itext是不支持css3的弹性布局的ITextRenderer pdfRendere…

单片机51 输入和输出

一、IO口基本概念介绍 单片机的IO口&#xff08;Input/Output口&#xff09;是连接单片机与外部电路或设备的接口。单片机的IO口可以分为输入口和输出口两种&#xff0c;用于控制和监测外部设备的状态。 1. 输入口&#xff1a;单片机的输入口用于接收外部电路或设备的信号。输…

展锐S8000安卓核心板参数_紫光展锐5G核心板模块定制方案

展锐S8000核心板模块是基于八核S8000平台开发设计的&#xff0c;采用了先进的6nm EUV制程技术。搭载了全新的智能Android 13操作系统&#xff0c;展现出超强的画面解析能力和高性能双通道MIPI&#xff0c;拥有120Hz高刷新率&#xff0c;独立NPU和3.2TOPS Al算力&#xff0c;同时…

关于Kinect 互动沙盘 深度图 Shader Graph 分层

把Kinect的深度图穿给Shader Graph using com.rfilkov.kinect; using UnityEngine; using UnityEngine.UI; public class GetDepthTex : MonoBehaviour { public Material Mat_SandTable; void Update() { Mat_SandTable.SetTexture("_MainTex"…

创新性3D数据合成模型,微软推出EgoGen

随着AR、VR等设备的广泛应用,第一人称的应用开始增多。但在研发方面面临不同的挑战,例如&#xff0c;图像模糊、视觉混乱、遮挡更严重等&#xff0c;给视觉模型的训练带来重大挑战。 一方面,人工标注真实第一视角数据集&#xff0c;来培训深度学习模型的成本和难度都很高。另一…

自举升压电容

一文了解BUCK电路自举电容 - 知乎 (zhihu.com) 在BUCK电路设计中&#xff0c;一般在CB(BST)和SW管脚之间会放置一颗0.1uF的陶瓷电容Cboot&#xff0c;这颗电容被叫做自举电容&#xff1b; 有的设计中BST和SW之间串接的是一颗电阻和一颗电容&#xff0c;他们分别被叫做自举电阻…

【论文精读】OS-Copilot: Towards Generalist Computer Agents with Self-Improvement

OS-Copilot: Towards Generalist Computer Agents with Self-Improvement 前言ABSTRACT1 INTRODUCTION2 THE OS-COPILOT FRAMEWORK2.1 PLANNER2.2 CONFIGURATOR2.2.1 DECLARATIVE MEMORY2.2.2 PROCEDURAL MEMORY2.2.3 WORKING MEMORY 2.3 ACTOR 3 THE FRIDAY AGENT3.1 A RUNNIN…

C# winfroms使用socket客户端服务端代码详解

文章目录 1️⃣ 通信相关说明1.1服务端与客户端1.2 信息发送原理1.3 信息接收原理 2️⃣ socket代码2.1 客户端代码2.2 服务端代码 3️⃣ 定时任务处理报文3.1 Timers定时任务 优质资源分享 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_4315141…

用友U8-OA协同工作系统doUpload.jsp接口任意文件上传漏洞

声明 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 1、系统介绍 用友协同云是新一代的企业社交化协同办公平台&#xff0c…

LangChain原理学习笔记

最新越发觉得AI的发展&#xff0c;对未来是一场革命&#xff0c;LangChain已经在工程设计上有了最佳实践&#xff0c;类似于AI时代的编程模型或编程框架&#xff0c;有点Spring框架的意思。之前在LangChain上也有些最佳实践&#xff0c;所以在这里分享记录下。 LangChain解决什…