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://xiahunao.cn/news/2806495.html

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

相关文章

Qt Android sdk配置报错解决

使用的jdk8总是失败&#xff0c;报错command tools run以及platform sdk等问题。后来主要是设置jdk版本为17&#xff0c;就配置生效了。Android sdk路径可以选用Android Studio自带的&#xff0c;但是也要在Qt中点击“设置SDK”按钮做必要的下载更新等。 编译器这里会自动检测到…

28-k8s集群中-StatefulSets控制器(进阶知识)

一、statefullsets控制器概述 1&#xff0c;举例 假如&#xff0c;我们有一个deployment资源&#xff0c;创建了3个nginx的副本&#xff0c;对于nginx来讲&#xff0c;它是不区分启动或者关闭的先后顺序的&#xff0c;也就是“没有特殊状态”的一个服务&#xff0c;也成“无状…

使用yolo-seg模型实现自定义自动动态抠图

yolov8导航 如果大家想要了解关于yolov8的其他任务和相关内容可以点击这个链接&#xff0c;我这边整理了许多其他任务的说明博文&#xff0c;后续也会持续更新&#xff0c;包括yolov8模型优化、sam等等的相关内容。 YOLOv8&#xff08;附带各种任务详细说明链接&#xff09; …

java——特殊文件日志技术

目录 特殊文件Properties文件XML文件XML文件有如下的特点XML的作用和应用场景解析XML文件 日志技术概述日志技术的体系结构Logback日志框架概述快速入门核心配置文件logback.xml日志级别项目中使用日志框架 特殊文件 Properties文件 后缀为.properties的文件&#xff0c;称之…

Qt MDI应用方法:QMdiArea和QMdiSubWindows类

重点&#xff1a; 1.使用MDI应用程序&#xff0c;需要在主窗口的工作区放置一个QMdiArea组件。 并将QMdiArea组件设置成中心窗口 2.MDI有两个显示模式&#xff1a;Tab多页显示模式和子窗口显示模式 子窗口显示模式有两种显示方法&#xff1a;窗口级联展开和平铺展开 窗口级联…

Vue+SpringBoot打造超市自助付款系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 商品类型模块2.2 商品模块2.3 超市账单模块 三、界面展示3.1 登录注册模块3.2 超市商品类型模块3.3 超市商品模块3.4 商品购买模块3.5 超市账单模块 四、部分源码展示4.1 实体类定义4.2 控制器接口 五、配套文档展示六、…

(蓝桥杯软件赛Java研究生组/A组)第一章语言基础-第二节:Java基础

文章目录 一&#xff1a;标识符、修饰符和注释&#xff08;1&#xff09;标识符&#xff08;2&#xff09;修饰符&#xff08;3&#xff09;注释 二&#xff1a;数据类型&#xff08;1&#xff09;分类&#xff08;1&#xff09;基本数据类型&#xff08;2&#xff09;引用数据…

大数据之Flink优化

文章目录 导言&#xff1a;Flink调优概览第1章 资源配置调优1.1 内存设置1.1.1 TaskManager 内存模型1.1.2 生产资源配置示例 1.2 合理利用 cpu 资源1.2.1 使用 DefaultResourceCalculator 策略1.2.2 使用 DominantResourceCalculator 策略1.2.3 使用DominantResourceCalculato…

在 where子句中使用子查询(一)

目录 子查询返回单行单列 查询公司工资最低的员工信息 查找公司雇佣最早的员工信息 子查询返回单行多列 查询与 ALLEN 工资相同&#xff0c;职位相同的所有员工信息 子查询返回多行单列 IN 操作 查询职位是“MANAGER”的所有员工的薪水 Oracle从入门到总裁:https://bl…

企业微信应用开发:使用Cpolar域名配置进行本地接口回调的调试指南

文章目录 1. Windows安装Cpolar2. 创建Cpolar域名3. 创建企业微信应用4. 定义回调本地接口5. 回调和可信域名接口校验6. 设置固定Cpolar域名7. 使用固定域名校验 企业微信开发者在应用的开发测试阶段&#xff0c;应用服务通常是部署在开发环境&#xff0c;在有数据回调的开发场…

JVM(1)

JVM简介 JVM是Java Virtual Machine的简称,意为Java虚拟机. 在java中,它归属于jre(java运行时环境), 而jre归属于jdk(java开发工具包). 虚拟机是指通过软件模拟的具有完整硬件功能的,运行在一个完全隔离的环境中的完整计算机系统. 常见的虚拟机:JVM, VMwave, VirtualBox. J…

代码随想录算法训练营第59天 | 583.两个字符串的删除操作 + 72.编辑距离 + 编辑距离总结篇

今日任务 583. 两个字符串的删除操作 72. 编辑距离 编辑距离总结篇 583.两个字符串的删除操作 - Medium 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步 可以…

K8S部署Java项目 pod报错 logs日志内容:no main manifest attribute, in app.jar

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

挑战!贪吃蛇小游戏的实现(2)

在贪吃蛇小游戏的实现&#xff08;1&#xff09;中&#xff0c;我们学习了win32 相关的一些知识&#xff0c;本篇文章&#xff0c;博主将带领大家从0开始实现贪吃蛇小游戏&#xff01; 贪吃蛇游戏设计与分析 本地化 <locale.h>实现本地化&#xff0c;该头文件提供的函数…

【方法】PDF如何与其它格式文件互相转换?

在工作上&#xff0c;有时候我们需要把PDF文件转换成其他格式的文件&#xff0c;比如Word、PPT、jpg等&#xff0c;或者是其他格式文件转换成PDF&#xff0c;那具体要如何操作呢&#xff1f;不清楚的小伙伴一起来看看吧&#xff01; 想把PDF文件转换成其他格式文件&#xff0c…

bisect_left 和 bisect_right 的源码实现及区别解析

哈喽大家好&#xff0c;我是chowley&#xff0c;最近再练二分查找的题&#xff0c;也顺便看了看Python官方的bisect库&#xff0c;这次做一个总结博客。 在 Python 中&#xff0c;bisect_left 和 bisect_right 是两个常用的二分查找函数&#xff0c;用于在已排序的序列中查找元…

Unity Shader ASE基础效果思路与代码(二):边缘光、扰动火焰

Unity Shader ASE基础效果思路与代码(二)&#xff1a;边缘光、扰动火焰 文章目录 Unity Shader ASE基础效果思路与代码(二)&#xff1a;边缘光、扰动火焰边缘光效果展示&#xff1a;代码与思路&#xff1a; 扰动火焰效果展示&#xff1a;代码与思路&#xff1a; 边缘光 效果展…

【黑马程序员】STL容器之string

string string 基本概念 string本质 string是c风格的字符串&#xff0c;而string本质上是一个类 string和char* 区别 char* 是一个指针string是一个类&#xff0c;类内部封装了char*,管理这个字符串&#xff0c;是一个char*型的容器 特点 string 内部封装了很多成员方法…

Linux第65步_学习“Makefie”

学习“Makefie”&#xff0c;为后期学习linux驱动开发做铺垫。 1、在“/home/zgq/linux/atk-mp1”创建一个“Test_MakeFile”目录用于学习“Makefie”。 打开终端 输入“cd /home/zgq/linux/回车”&#xff0c;切换到“/home/zgq/linux/”目录 输入“mkdir Linux_Drivers回…

Python 在Word中创建表格并填入数据、图片

在Word中&#xff0c;表格是一个强大的工具&#xff0c;它可以帮助你更好地组织、呈现和分析信息。本文将介绍如何使用Python在Word中创建表格并填入数据、图片&#xff0c;以及设置表格样式等。 Python Word库&#xff1a; 要使用Python在Word中创建或操作表格&#xff0c;需…