Java基础知识回顾

Java基础

一、Java概述

1、Java技术体系平台

类型简介
JavaSE 标准版支持面向桌面级的应用
JavaEE 企业版支持为企业开发的应用
JavaME 小型版运行在移动终端的平台

2、Java重要的特点

  • 面向对象的语言(OOP)

  • 健壮的语言,具有强类型转换、异常处理、垃圾自动回收

  • 跨平台的语言,一个编译好的(.class)文件可以在多种系统上运行(运行在不同平台对应的JVM虚拟机上)

    • Win版本JVM
    • Linux版本的JVM
    • Mac版本的JVM
  • 解释型的语言,编译后的代码,需要在解释器上面进行运行(对应的编译型语言,编译后的代码,可以直接在机器上运行)

3、JDK,JRE、JVM

  • JDK:(Java Development Kit) Java开发工具包
    • JDK = JRE + java的开发工具【Java,javac,javadoc,javap等】
  • JRE:( Java Runtime Environment ) java的运行环境
    • JRE = JVM + JavaSE的标准类库
    • 运行开发好的.class文件只需要JRE
  • JVM:( Java Virtual Machine) Java的虚拟环境

java运行流程:
请添加图片描述

java类的组织形式:

请添加图片描述

4、Java开发细节

  1. Java的源文件以.java为扩展名。源文件的基本组成是class

  2. 一个源文件最多只能一个public类,其他类的个数不限。文件名必须按该public类名进行命名。

  3. Java严格区分大小写

  4. Java程序的入口是main方法,(可以写在非public类中)有固定书写格式:

    • public static void main(String[] args){...}
      

二、变量

变量 = 变量名 + 值 + 数据类型

1、Java的数据类型

  • 基本数据类型(8种)
    • 整数类型
      • int 占四个字节
      • short 占两个字节
      • long 占八个字节
      • byte 占一个字节
    • 浮点类型
      • float 占四个字节
      • double 占八个字节
    • 字符型
      • char 两个字节
    • 布尔型
      • boolean 一个字节
  • 引用数据类型
    • 接口
    • 数组

2、数据类型转换

java的类型转换有两种:一种是自动类型的转换,一种是强制类型的转换。

(1)自动类型转换

规则: 数据类型按精度大小进行自动转换
请添加图片描述

注意细节:

  1. 多种数据类型运算,会自动转换为容量最大的进行计算
  2. 在自动类型转换过程中,不能将精度大的数据类型转换为精度小的数据类型。
  3. byteshort)和char 不会自动转换
(2)强制类型转换

属于自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型,同时需要加上强制转换符(),可能会造成精度降低或者溢出的情况。

注意细节:

  1. 强制转换符只针对最近的操作数有效。

    int x = (int)10*3.5 + 6*1.5;		//报错
    int y = (int)(10*3.2 + 6*3.5);		//正常运行
    
  2. char 类型可以保存int类型的常量值,但是不会保存int的变量值

    char c1 = 10000;    //正常运行
    int m = 100;
    char c2 = m;        //报错
    char c3 = (char)m;  //正常运行
    
  3. byteshortchar类型在进行运算时,当做int进行处理

基本数据类型和String类型的转换

  • 基本类型转String

    int n1 = 100;
    float n2 = 1.1f;
    double n3 = 1.2;
    boolean b1 = true;
    String s1 = n1 + "";			//直接加双引号便可以实现类型的转换
    String s2 = n2 + "";
    String s3 = n3 + "";
    String s4 = b1 + "";
    System.out.println("str1:"+s1+"  str2:"+s2+"  str3:"+s3+"  str4:"+s4);
    
  • String类型转基本类型(调用基本类型的包装类,调用parseXXX方法

    Integer.parseInt("123");		//调用parseXXX方法
    Double.parseDouble("123.4");
    Float.parseFloat("123.45");
    Short.parseShort("12");
    Long.parseLong("123");
    Boolean.parseBoolean("true");
    Byte.parseByte("12");
    

三、运算符

1、算术运算符

平时最常用的运算符

运算符运算
+正号、加号
-负号、减号
*乘号
/除号
%取模(取余)
++自增,根据前后顺序分为,先运算后取值,和先取值后运算
自减,根据前后顺序分为,先运算后取值,和先取值后运算

2、赋值运算符

将某个运算后的值,赋给指定的变量。

运算符运算a 与b进行运算
=等于号a = b, 为b赋值给a
+=加于等于a += b,为 a = a + b
-=减于等于a -= b,为 a = a - b
*=乘以等于a *= b,为 a = a * b
/=除以等于a /= b,为 a = a / b
%=取余等于a %= b,为 a = a % b

3、关系运算符

关系运算符的结果都是boolean型的,经常用在if或者循环结构中

运算符运算
==相等于
!=不等于
<小于
>大于
<=小于等于
>=大于等于

4、逻辑运算符

连接多个条件(多个关系表达式),最终的结果是boolean类型

  • 短路与 &&, 短路或 ||, 取反
  • 逻辑与 &, 逻辑或 |,逻辑异或 ^
aba&ba&&ba|ba||b!aa^b
truetruetruetruetruetruefalsefalse
truefalsefalsefalsetruetruefalsetrue
falsetruefalsefalsetruetruetruetrue
falsefalsefalsefalsefalsefalsetruefalse

5、位运算符

位运算符用于直接操作二进制位的运算,可以用来进行高效的位操作。在很多情况下,采用位运算的方法来进行计算可以提高运算效率

运算符描述示例
&按位与,对应位都为1时结果为1,否则为05 & 3 = 1
|按位或,对应位有一个为1时结果为1,两个都为0时结果为0`5
^按位异或,对应位不同时结果为1,相同时结果为05 ^ 3 = 6
~取反,对二进制数的每一位取反~5 = -6
<<左移,将一个数的二进制位向左移动指定的位数5 << 1 = 10
>>右移,将一个数的二进制位向右移动指定的位数5 >> 1 = 2
>>>无符号右移,运算规则:低位溢出,高位补零5 >>> 2 = 1

6、三元运算符

基本语法为: 条件表达式 ? 表达式1 : 表达式2;

运算规则:

  1. 如果条件表达式为true,运算后的结果是表达式1
  2. 如果条件表达式为false,运算后的结果为表达式2
int a = 1, b = 2;
//三元运算符
int ans = a > b ? a++ : b++;
//等价表达
if(a > b) ans = a++;        
else  ans = b++;

7、运算符优先级

优先级如下,最上面的优先级最高

运算符描述
(),{}括号
单目运算符(++、--、~、!单目运算符
算术运算符(*,/, %, +, -乘、除、取模、加、减等
移位运算符 (<<, >>)左移、右移等
比较运算符 (>, <, >=, <=)相等、不等、大于、小于、大于等于、小于等于
&按位与
^按位异或
``
&&逻辑与
`
? :条件运算符
赋值运算符 (=, *=, /=, +=, -=)赋值、加等于、减等于、乘等于等

8、标识符(变量)

标识符(变量)命名规则:

  1. 由26个英文字母大小写,0-9_或$组成
  2. 数字不可以开头
  3. 不可以使用保留字和关键字,可以包含保留字和关键字
  4. 严格区分大小写,长度无限制
  5. 不能包含空格

示例:

int 12ab = 10; //报错,开头不能是数字
int a b = 10;  //报错,中间不能加入空格
int a# = 10;  //报错,特殊字符只能是_或者$
int goto = 10; //报错,不能是保留字或者是关键字

标识符命名规范:

  1. 包名:多单词组成时,都是小写:aaa.bbb.ccc
  2. **类名、接口名:**多单词组成时,所有单词的首字母都是大写:(大驼峰命名法)
    • 举例:TankShotGame
  3. 变量名、方法名:第一个单词首字母小写,第二个单词开始每个首字母大写(小驼峰命名法)
    • 举例:tankShotGame
  4. 常量名:所有单词都是大写
    • 举例:比如所得税 TAX_RATE

9、关键字

50个关键字如下表:

基本类型关键字流程控制关键字类、方法和变量相关关键字访问控制关键字异常处理关键字其他关键字
booleanifclasspublictrystatic
byteelseinterfaceprivatecatchfinal
charswitchextendsprotectedfinallysynchronized
doublecaseimplementsthrowtransient
floatwhilenewthrowsvolatile
intdoreturnthis
longforvoidsuper
shortbreakpackage
continueimport
default

四、数组

1、数组的赋值机制

  1. 基本数据类型赋值,采用值传递的方式。
  2. 数组数据类型赋值,是采用引用传递的方式,赋的值是地址。

举例:

//基础数据类型赋值,是值传递
int a = 10;
int b = a;      //a的值10,直接复制一份给b
b = 80;
System.out.println("a:"+a+ "  b:" + b);
//数组的赋值,是引用传递,传递的是地址
int arr1[] = {1,2,3};       //假设arr1指向的地址为0x0011
int arr2[] = arr1;          //那么arr2指向的地址也是0x0011,这个地址指向的内容是一样的
arr2[0] = 10;               //arr2[0]修改的是0x0011地址指向的内容,所以arr1[0] = arr2[0] = 10;
System.out.println("arr1[0]:"+arr1[0]+ "  arr2[0]:" + arr2[0]);

2、二维数组

主要是申请,二维数组可以通过静态申请和动态申请两种方式进行。

//静态申请,直接申请一个静态的二维固定长度数组
int arr1[][] = new int[2][3];
int arr2[][] = {{1,2,3},{4,5,6},{7,8,9}};//动态申请,第一维长度先固定,后面根据需要设定第二维度的长度
int arr3[][] = new int[3][];
for(int i = 0; i < arr3.length; i++){arr3[i] = new int[arr3.length];
}

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

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

相关文章

【Docker】基础篇

文章目录 Docker为什么出现容器和虚拟机关于虚拟机关于Docker二者区别&#xff1a; Docker的基本组成相关概念-镜像&#xff0c;容器&#xff0c;仓库安装Docker卸载docker阿里云镜像加速docker run的原理**为什么容器比虚拟机快**Docker的常用命令1.帮助命令2.镜像相关命令3.容…

SpringMVC拦截器

拦截器 1.拦截器概念2.拦截器开发2.1环境准备2.2拦截器开发流程 3 拦截器参数1. 前置处理方法2. 后置处理方法3 完成处理方法4.配置多个拦截器 1.拦截器概念 (1)浏览器发送一个请求会先到Tomcat的web服务器 (2)Tomcat服务器接收到请求以后&#xff0c;会去判断请求的是静态资源…

可实现RSSD云硬盘120万IOPS的SPDK IO路径优化

一. 简介 用户对超高并发、超大规模计算等需求推动了存储硬件技术的不断发展&#xff0c;存储集群的性能越来越好&#xff0c;延时也越来越低&#xff0c;对整体IO路径的性能要求也越来越高。在云硬盘场景中&#xff0c;IO请求从生成到后端的存储集群再到返回之间的IO路径比较…

【Java】网络编程-UDP字典服务器客户端简单代码编写

上文讲了UDP回响服务器客户端简单代码编写 本文将讲述UDP字典服务器客户端简单代码编写。所谓回显&#xff0c;就是指客户端向服务器发送一个报文&#xff0c;从服务器那里得到一条一模一样的回响报文 而我们的字典功能呢&#xff0c;则是实现了输入中文&#xff0c;得到对应…

智能物联网汽车3d虚拟漫游展示增强消费者对品牌的认同感和归属感

汽车3D虚拟展示系统是一种基于web3D开发建模和VR虚拟现实技术制作的360度立体化三维汽车全景展示。它通过计算机1:1模拟真实的汽车外观、内饰和驾驶体验&#xff0c;让消费者在购车前就能够更加深入地了解车辆的性能、特点和设计风格。 华锐视点云展平台是一个专业的三维虚拟展…

Pytorch:backward()函数详解

.backward() .backward() 是 PyTorch 中用于自动求导的函数&#xff0c;它的主要作用是计算损失函数对模型参数的梯度&#xff0c;从而实现反向传播算法。 在深度学习中&#xff0c;我们通常使用梯度下降算法来更新模型参数&#xff0c;使得模型能够逐步逼近最优解。 在梯度下…

linux中deadline调度原理与代码注释

简介 deadline调度是比rt调度更高优先级的调度&#xff0c;它没有依赖于优先级的概念&#xff0c;而是给了每个实时任务一定的调度时间&#xff0c;这样的好处是&#xff1a;使多个实时任务场景的时间分配更合理&#xff0c;不让一些实时任务因为优先级低而饿死。deadline调度…

(保姆级教程)一篇文章,搞定所有Linux命令,以及tar解压缩命令,wget、rpm等下载安装命令,Linux的目录结构,以及用户和用户组

文章目录 Linux命令1. Linux目录结构2. 基本命令&#xff08;了解&#xff09;3. 目录&#xff08;文件夹&#xff09;命令列出目录切换目录创建目录删除目录复制目录移动和重命名目录 4. 文件命令创建文件编辑文件编辑文件时的其他操作 查看文件移动/重命名文件复制文件删除文…

机器学习---聚类(原型聚类、密度聚类、层次聚类)

1. 原型聚类 原型聚类也称为“基于原型的聚类” (prototype-based clustering)&#xff0c;此类算法假设聚类结构能通过一 组原型刻画。算法过程&#xff1a;通常情况下&#xff0c;算法先对原型进行初始化&#xff0c;再对原型进行迭代更新求解。著 名的原型聚类算法&#…

基于Redis限流(aop切面+redis实现“令牌桶算法”)

令牌桶算法属于流量控制算法&#xff0c;在一定时间内保证一个键&#xff08;key&#xff09;的访问量不超过某个阈值。这里的关键是设置一个令牌桶&#xff0c;在某个时间段内生成一定数量的令牌&#xff0c;然后每次访问时从桶中获取令牌&#xff0c;如果桶中没有令牌&#x…

【机器学习】梯度下降法:从底层手写实现线性回归

【机器学习】Building-Linear-Regression-from-Scratch 线性回归 Linear Regression0. 数据的导入与相关预处理0.工具函数1. 批量梯度下降法 Batch Gradient Descent2. 小批量梯度下降法 Mini Batch Gradient Descent&#xff08;在批量方面进行了改进&#xff09;3. 自适应梯度…

C++相关闲碎记录(17)

1、IO操作 &#xff08;1&#xff09;class及其层次体系 &#xff08;2&#xff09;全局性stream对象 &#xff08;3&#xff09;用来处理stream状态的成员函数 前四个成员函数可以设置stream状态并返回一个bool值&#xff0c;注意fail()返回是failbit或者badbit两者中是否任一…

【重点】【DP】152.乘积最大的子数组

题目 法1&#xff1a;DP 参考&#xff1a;https://blog.csdn.net/Innocence02/article/details/128326633 f[i]表示以i结尾的连续子数组的最大乘积&#xff0c;d[i]表示以i结尾的连续子数组的最小乘积 。 如果只有正数&#xff0c;我们只需要考虑最大乘积f[i]&#xff1b;有负…

MATLAB - Gazebo 仿真环境

系列文章目录 前言 机器人系统工具箱&#xff08;Robotics System Toolbox™&#xff09;为使用 Gazebo 模拟器可视化的模拟环境提供了一个界面。通过 Gazebo&#xff0c;您可以在真实模拟的物理场景中使用机器人进行测试和实验&#xff0c;并获得高质量的图形。 Gazebo 可在…

c# OpenCV 基本绘画(直线、椭圆、矩形、圆、多边形、文本)(四)

我们将在这里演示如何使用几何形状和文本注释图像。 Cv2.Line() 绘制直线 Cv2.Ellipse() 绘制椭圆Cv2.Rectangle() 绘制矩形Cv2.Circle() 绘制圆Cv2.FillPoly() 绘制多边形Cv2.PutText() 绘制文本 一、绘制直线 Cv2.Line(image, start_point, end_point, color, thickness) …

从传统型数据库到非关系型数据库

一 什么是数据库 数据库顾名思义保存数据的仓库&#xff0c;其本质是一个具有数据存储功能的复杂系统软件&#xff0c;数据库最终把数据保存在计算机硬盘&#xff0c;但数据库并不是直接读写数据在硬盘&#xff0c;而是中间隔了一层操作系统&#xff0c;通过文件系统把数据保存…

2023ChatGPT浪潮,2024开源大语言模型会成王者?

《2023ChatGPT浪潮&#xff0c;2024开源大语言模型会成王者&#xff1f;》 一、2023年的回顾 1.1、背景 我们正迈向2023年的终点&#xff0c;回首这一年&#xff0c;技术行业的发展如同车轮滚滚。尽管互联网行业在最近几天基本上处于冬天&#xff0c;但在这一年间我们仍然经…

递归经典三题

目录1.斐波那契数列&#xff1a; 2.青蛙跳台阶问题&#xff1a; 3.汉诺塔问题 1.斐波那契数列&#xff1a; 由斐波那契数列从第三项开始&#xff0c;每一项等于前两项之和&#xff0c;可以使用递归计算给定整数的斐波那契数。 1&#xff0c;1&#xff0c;2&#xff0c;3&am…

酒水品牌网站建设的效果如何

酒是人们餐桌常常出现的饮品&#xff0c;市场中的大小酒品牌或经销商数量非常多&#xff0c;国内国外都有着巨大市场&#xff0c;酒讲究的是品质与品牌&#xff0c;信息发展迅速的时代&#xff0c;商家们都希望通过多种方式获得生意增长。 酒商非常注重品牌&#xff0c;消费者也…

为什么要编写测试用例,测试用例写给谁看?

“为什么要编写测试用例&#xff0c;测试用例写给谁看”&#xff0c;这个问题看似简单&#xff0c;但却涵盖了一系列复杂的考虑因素&#xff0c;并不太好回答。 为了向各位学测试的同学们解释清楚“为什么编写测试用例是至关重要的”&#xff0c;我将通过以下5个方面进行展开&…