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.mzph.cn/news/699048.shtml

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

相关文章

Rust: reqwest库示例

一、异步处理单任务 1、cargo.toml [dependencies] tokio { version "1.0.0", features ["full", "tracing"] } tokio-util { version "0.7.0", features ["full"] } tokio-stream { version "0.1" }…

抖音爬虫批量视频提取功能介绍|抖音评论提取工具

抖音爬虫是指通过编程技术从抖音平台上获取视频数据的程序。在进行抖音爬虫时&#xff0c;需要注意遵守相关法律法规和平台规定&#xff0c;以确保数据的合法获取和使用。 一般来说&#xff0c;抖音爬虫可以实现以下功能之一&#xff1a;批量视频提取。这个功能可以用于自动化地…

大数据-数据可视化-环境部署vue+echarts+显示案例

文章目录 一、安装node.js1 打开火狐浏览器,下载Node.js2 进行解压3 配置环境变量4 配置生效二、安装vue脚手架1 下载vue脚手架,耐心等待。三、创建vue项目并启动1 创建2 启动四、下载echarts.js与axios.js到本地。五、图表显示demo【以下所有操作均在centos上进行】 一、安…

Python爬虫技术详解:从基础到高级应用,实战与应对反爬虫策略【第93篇—Python爬虫】

前言 随着互联网的快速发展&#xff0c;网络上的信息爆炸式增长&#xff0c;而爬虫技术成为了获取和处理大量数据的重要手段之一。在Python中&#xff0c;requests模块是一个强大而灵活的工具&#xff0c;用于发送HTTP请求&#xff0c;获取网页内容。本文将介绍requests模块的…

Java设计模式 | 简介

设计模式的重要性&#xff1a; 软件工程中&#xff0c;设计模式&#xff08;design pattern&#xff09;是对软件设计中普遍存在&#xff08;反复出现&#xff09;的各种问题&#xff0c;所提出的解决方案。 这个术语由埃里希 伽玛&#xff08;Erich Gamma&#xff09;等人在1…

在项目中应用设计模式的实践指南

目录 ✨✨ 祝屏幕前的您天天开心&#xff0c;每天都有好运相伴。我们一起加油&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; 引言 一. 单例模式&#xff08;Singleton Pattern&#xff09; 1、实现单例模式的方式 1…

【Leetcode】2583. 二叉树中的第 K 大层和

文章目录 题目思路代码结果 题目 题目链接 给你一棵二叉树的根节点 root 和一个正整数 k 。 树中的 层和 是指 同一层 上节点值的总和。 返回树中第 k 大的层和&#xff08;不一定不同&#xff09;。如果树少于 k 层&#xff0c;则返回 -1 。 注意&#xff0c;如果两个节点与根…

eureka 简介和基本使用

Eureka 是Netflix开发的服务发现框架&#xff0c;是Spring Cloud微服务架构中的一部分。它主要用于微服务架构中的服务注册与发现。Eureka由两部分组成&#xff1a;Eureka Server 和 Eureka Client。获取更详细的信息可以访问官网&#xff0c;如下图&#xff1a; Eureka Server…

【Docker 的安装:centos】

文章目录 1 :peach:各版本平台支持情况:peach:2 :peach:CentOS 安装:peach:2.1 :apple:安装依赖:apple:2.2 :apple:安装 Docker:apple:2.3 :apple:实战经验:apple:2.3.1 :lemon:Docker 镜像源修改:lemon:2.3.2 :lemon:Docker 目录修改:lemon: 1 &#x1f351;各版本平台支持情况…

Linux设备模型(二) - kset/kobj/ktype APIs

一&#xff0c;kobject_init_and_add 1&#xff0c;kobject_init_and_add实现 /** * kobject_init_and_add() - Initialize a kobject structure and add it to * the kobject hierarchy. * kobj: pointer to the kobject to initialize * ktype: p…

探索无限:Sora与AI视频模型的技术革命 - 开创未来视觉艺术的新篇章

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua&#xff0c;在这里我会分享我的知识和经验。&#x…

Unity实现帧序列

一、目的 1.想实现序列帧效果 自己使用Animation一直无法实现动画播放效果 二、参考 1. Unity序列帧动画——Sprite图片集制作UI动画_unity 序列帧动画图集-CSDN博客 结果&#xff1a;很好用&#xff0c;能实现效果 三、实操 新建Image&#xff0c;增加Animator组件&#x…

【数据结构】排序(1)

目录 一、概念&#xff1a; 二、直接插入排序&#xff1a; 三、希尔排序&#xff1a; 四、直接选择排序&#xff1a; 五、堆排序&#xff1a; 六、冒泡排序&#xff1a; 一、概念&#xff1a; 排序的概念&#xff1a; 使一串记录&#xff0c;按照其中的某个或某些关键字…

【电路笔记】-RC放电电路

RC放电电路 文章目录 RC放电电路1、概述2、RC放电电路3、RC放电电路示例当电压源从完全充电的 RC 电路中移除时,电容器 C 将通过电阻 R 放电。 1、概述 RC 放电电路利用电阻器-电容器组合的固有 RC 时间常数以指数衰减率对电容器进行放电。 在之前的 RC 充电电路教程中,我们…

向量的组成

向量是有序的一维数组&#xff0c;其中包含多个标量元素。每个元素都有一个索引&#xff0c;表示其在向量中的位置。在数学表示中&#xff0c;我们通常用小写粗体字母表示向量&#xff0c;如 v。 关于向量、张量、标量与矩阵的关系可以参见另一篇文章&#xff1a;线性代数&…

开源免费的NTFS for mac工具mounty

开源免费的NTFS for mac工具mounty 安装依赖 brew install gromgit/fuse/ntfs-3g-macbrew install --cask macfuse安装mounty 如果已经安装macFUSE和ntfs-3g-mac&#xff0c;可以直接点击下载的dmg安装包&#xff0c;安装升级。第一次启动mounty&#xff0c;你需要接受一系列…

项目优化-

前言 用户浏览菜品&#xff0c;添加购物车&#xff0c;下单等操作最终都会反映成一个sql&#xff0c;操作数据库。 但是当前系统只部署了一台数据库&#xff0c;读和写所有压力都由一台数据库承担&#xff0c;压力大&#xff1b;如果数据库服务器磁盘损坏则数据丢失&#xff0…

【这个词(Sequence-to-Sequence)在深度学习中怎么解释,有什么作用?】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;深度学习笔记 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; Sequence-to-Sequence&#xff08;Seq2Seq&#xff09; Sequence-to-Sequence&#xff08;Seq2Seq…

【论文阅读】ICCV 2023 计算和数据高效后门攻击

文章目录 一.论文信息二.论文内容1.摘要2.引言3.主要图表4.结论 一.论文信息 论文题目&#xff1a; Computation and Data Efficient Backdoor Attacks&#xff08;计算和数据高效后门攻击&#xff09; 论文来源&#xff1a; 2023-ICCV&#xff08;CCF-A&#xff09; 论文团…

【DDD】学习笔记-薪资管理系统的测试驱动开发

回顾薪资管理系统的设计建模 在 3-15 课&#xff0c;我们通过场景驱动设计完成了薪资管理系统的领域设计建模。既然场景驱动设计可以很好地与测试驱动开发融合在一起&#xff0c;因此根据场景驱动设计的成果来开展测试驱动开发&#xff0c;就是一个水到渠成的过程。让我们先来…