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

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的知识点先分享到这里,小伙伴们可以在评论区留言,点赞支持一下吧!

相关文章:

Java知识点一

hello&#xff0c;大家好&#xff01;我们今天开启Java语言的学习之路&#xff0c;与C语言的学习内容有些许异同&#xff0c;今天我们来简单了解一下Java的基础知识。 一、数据类型 分两种&#xff1a;基本数据类型 引用数据类型 &#xff08;1&#xff09;整型 八种基本数…...

Django学习笔记-forms使用

1.创建forms.py文件,导入包 from django import forms from django.forms import fields from django.forms import widgets2. 创建EmployeeForm,继承forms.Form 3.创建testform.html文件 4.urls.py添加路由 5.views中导入forms 创建testform,编写代码 1).如果请求方式为GET,…...

BM100 设计LRU缓存结构(java实现)

一、题目 设计LRU(最近最少使用)缓存结构&#xff0c;该结构在构造时确定大小&#xff0c;假设大小为 capacity &#xff0c;操作次数是 n &#xff0c;并有如下功能: Solution(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存get(key)&#xff1a;如果关键字 key …...

论文阅读——ONE-PEACE

ONE-PEACE: EXPLORING ONE GENERAL REPRESENTATION MODEL TOWARD UNLIMITED MODALITIES 适应不同模态并且支持多模态交互。 预训练任务不仅能提取单模态信息&#xff0c;还能模态间对齐。 预训练任务通用且直接&#xff0c;使得他们可以应用到不同模态。 各个模态独立编码&am…...

围剿尚未终止 库迪深陷瑞幸9.9阳谋

文|智能相对论 作者|霖霖 总能被“累了困了”的打工人优先pick的咖啡&#xff0c;刚复工就顺利站上话题C位。 #瑞幸9.9元一杯活动缩水#的话题才爬上新浪微博热搜&#xff0c;“库迪咖啡河北分公司运营总监带头坑害河北联营商”的实名举报帖就出现在了小红书&#xff0c;一时…...

5G网络(接入网+承载网+核心网)

5G网络&#xff08;接入网承载网核心网&#xff09; 一、5G网络全网架构图 这张图分为左右两部分&#xff0c;右边为无线侧网络架构&#xff0c;左边为固定侧网络架构。 无线侧&#xff1a;手机或者集团客户通过基站接入到无线接入网&#xff0c;在接入网侧可以通过RTN或者IP…...

学习Markdown

https://shadows.brumm.af 欢迎使用Markdown编辑器 你好&#xff01; 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章&#xff0c;了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些…...

MySQL知识点总结(五)——锁

MySQL知识点总结&#xff08;五&#xff09;——锁 锁分类表锁 & 行锁如何添加表锁&#xff1f;如何添加行锁&#xff1f; 读锁 & 写锁行锁 & 间隙锁&#xff08;gap lock&#xff09;& 临键锁&#xff08;next-key lock&#xff09; 加锁机制分析可重复读隔离…...

IDEA 2023.2 配置 JavaWeb 工程

目录 1 不使用 Maven 创建 JavaWeb 工程 1.1 新建一个工程 1.2 配置 Tomcat 1.3 配置模块 Web 2 使用 Maven 配置 JavaWeb 工程 2.1 新建一个 Maven 工程 2.2 配置 Tomcat &#x1f4a5;提示&#xff1a;IDEA 只有专业版才能配置 JavaWeb 工程&#xff0c;若是社区版&am…...

软考40-上午题-【数据库】-关系代数运算2-专门的集合运算

一、专门的集合运算 1、投影 示例&#xff1a; 可以用属性名进行投影&#xff0c;也可以用列的序号进行投影。 2、选择 例题 1、笛卡尔积 2、投影 3、选择 3、连接 第一步都要算&#xff1a;笛卡尔积。 3-1、θ连接 示例&#xff1a; 3-2、等值连接 示例&#xff1a; 3-3、自…...

RHEL9安装Python2.7

RHEL9作为2022年5月新推出的版本&#xff0c;较RHEL8有了很多地方的改进&#xff0c;而且自带很多包&#xff0c;功能非常强大&#xff0c;稳定性和流畅度也较先前版本有了很大的提升。RHEL9自带python3.9&#xff0c;但是过高版本的python不可避免地会导致一些旧版本包地不兼容…...

更新至2022年世界各国数字经济发展相关指标(23个指标)

更新至2022年世界各国数字经济发展相关指标&#xff08;23个指标&#xff09; 1、时间&#xff1a;具体指标时间见下文 2、来源&#xff1a;WDI、世界银行、WEF、UNCTAD、SJR、国际电联 3、指标&#xff1a;移动网络覆盖率&#xff08;2000-2022&#xff09;、固定电话普及率…...

vue从flask获取数据并显示

记录一个前后端分离遇到的问题&#xff0c;即vue前端从flask后端获取数据。具体描述如下&#xff1a;flask只负责连接数据库并获取数据库的数据&#xff0c;并返回给前端vue&#xff1b;vue则需要获取后端返回的数据并显示。 方法如下&#xff0c;分别用一个vue组件和一个flas…...

Kafka生产常见问题分析与总结

Kafka生产常见问题分析与总结 消息丢失 生产者 acks 0 不需要等待任何Broker确认收到消息的回复就可以继续发消息 性能最高&#xff0c;但是最容易丢消息&#xff0c;对于数据丢失不敏感的场景可以使用&#xff0c;如大数据统计报表 acks 1 只要等待Broker中的leader成功写…...

重温MySQL

mysql 是什么 mysql 就是一个软件,专门用来管理文件的软件 关系型数据库:采用二维表结构组织和管理数据,并且规定了表和表间数据的关系. 表是由行和列构成,列包含一组命名的属性(也称字段),行包含一条记录.行和列的交集称为数据项 (也称字段值). 如何操作数据库 那就是用sq…...

构造函数,原型,实例,类的关系整理

视频来源js原型链、构造函数和类_哔哩哔哩_bilibili 如视频所说&#xff0c;构造函数的prototype指向原型&#xff0c;实例化的对象的__proto__指向原型&#xff0c;原型通过constructor指向构造函数&#xff0c;正如class里面的constructor方法就相当于Person构造函数一样&am…...

[极客挑战2019]HTTP

这道题考察的是http请求头字段的含义和使用&#xff1b; 具体如下 Referer:来源地址 User-Agent:客户端配置信息&#xff1a;浏览器类型、版本、系统类型等 X-Forwarded-For:代理地址&#xff0c;即数据发出的地址 开始解题&#xff1a;&#xff08;对我这初学者真的烧脑&a…...

发布 rust 源码包 (crates.io)

rust 编程语言的包 (或者 库, library) 叫做 crate, 也就是软件中的一个组件. 一个完整的软件通常由多个 crate 组成, rust 编译器 (rustc) 一次编译一整个 crate, 不同的 crate 可以同时并行编译. rust 官方有一个集中发布开源包的网站 crates.io. 发布在这上面的 crate 可以…...

jQuery 基础、选择器和筛选器

【一】JQuery基础 【1】什么时Jquery &#xff08;1&#xff09;定义 jQuery是一个流行的JavaScript库&#xff0c;旨在简化JavaScript编程和处理HTML文档的任务。它提供了一组易于使用的功能和方法&#xff0c;可以加快开发速度并提高跨浏览器兼容性。一款轻量级的JS框架 …...

网络原理-UDP/TCP协议

协议 在网络通信中,协议是非常重要的一个概念,在下面,我将从不同层次对协议进行分析. 应用层 IT职业者与程序打交道最多的一层,调用系统提供的API写出的代码都是属于应用层的. 应用层中有很多现成的协议,但是更多的,我们需要根据实际情况来进行制作自定义协议. 自定义协议…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...