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.mfbz.cn/a/258062.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MCU为什么上电不启动?

都遇到过这样的问题吧&#xff0c;自信满满的把程序下载到板子上&#xff0c;结果发现MCU居然没启动。 出现这个问题有很多原因&#xff0c;总结为以下五点&#xff1a; 第一&#xff0c;boot引脚电平不对&#xff0c;例如在GD32的MCU上&#xff0c;boot引脚决定了MCU的启动方式…

【pycharm】Pycharm常用快捷键

批量替换是指一次性替换多个文件中的指定内容。在开发过程中&#xff0c;可能会遇到需要替换多个文件中的某个字符串或者某段代码的情况。如果一个一个文件进行替换&#xff0c;那么将会非常耗时和繁琐。 而使用批量替换功能&#xff0c;则可以一次性完成所有文件的替换操作&am…

MyBatis——自定义MyBatis(了解)

1.自定义MyBatis-了解 创建工程&#xff0c;拷贝上一个工程代码&#xff0c;去掉mybatis的依赖&#xff1a; 1.1.MyBatis的核心对象 我们已经通过案例体验到了mybatis的魅力。现在来梳理一下MyBatis运行时的几个对象&#xff0c;我们需要搞清楚他们的作用&#xff0c;进而需要…

java参数校验

引入依赖 <!--参数效验--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency><!--Length参数效验--><dependency><groupId>org.hib…

pycharm手动安装ini插件

pycharm中新增pytest.ini文件时发现&#xff0c;文件的图标不是配置文件的图标 原因是没有安装ini插件 安装插件的方式有很多种&#xff0c;今天通过去官网下载插件&#xff0c;再安装的方式 第一步&#xff1a;去官网搜索&#xff0c;地址是&#xff1a;https://plugins.jet…

【Java 集合】LinkedBlockingQueue

LinkedBlockingQueue, 顾名思义: 基于链表的阻塞队列, 位于 JUC (java.util.concurrent) 下, 是一个线程安全的集合, 其本身具备了 不支持 null 元素: 存入 null 元素会抛出异常固定不限容量: 在不手动设置容量时, 最大可以支持 Integer.MAX_VALUE 个元素, 也就是理论上的无限个…

MapReduce 基础实战

文章目录 第1关&#xff1a;成绩统计第2关&#xff1a;文件内容合并去重 第1关&#xff1a;成绩统计 编程要求 使用MapReduce计算班级每个学生的最好成绩&#xff0c;输入文件路径为/user/test/input&#xff0c;请将计算后的结果输出到/user/test/output/目录下。 测试说明 …

去掉乘法运算的加法移位神经网络架构

[CVPR 2020] AdderNet: Do We Really Need Multiplications in Deep Learning? 代码&#xff1a;https://github.com/huawei-noah/AdderNet/tree/master 核心贡献 用filter与input feature之间的L1-范数距离作为“卷积层”的输出为了提升模型性能&#xff0c;提出全精度梯度…

Python之math模块常用方法汇总

python中math模块常用的方法整理 ceil:取大于等于x的最小的整数值&#xff0c;如果x是一个整数&#xff0c;则返回x copysign:把y的正负号加到x前面&#xff0c;可以使用0 cos:求x的余弦&#xff0c;x必须是弧度 degrees:把x从弧度转换成角度 e:表示一个常量 exp:返回mat…

docker制作php5.4运行环境镜像

1.下载镜像 docker pull centos:7或者在控制面板下 2.运行centos7镜像的容器&#xff0c;edncenos7 是新生成的容器名称 ## --name 新名字 docker run -it --name edncenos7 c9a1fdca3387 /bin/bash3.在容器内下载php5.4等插件&#xff0c;以便提交成为新镜像 wget --no-ch…

亚信安慧AntDB数据库——助力5G计费核心替换,全面自主可控

数字经济时代&#xff0c;5G以更快、更丰富、更智能的连接方式服务于各行各业。AntDB数据库&#xff0c;源于亚信科技&#xff0c;自2008年起成功落地全国24个省份的中国移动、中国电信、中国联通和中国广电等运营商项目&#xff0c;为数字化服务和信息化基础建设提供支持。 在…

精选猫咪最爱:五款性价比超高的猫罐头品牌大PK!

新手养猫很容易陷入疯狂购买的模式&#xff0c;但有些品牌真的不能乱买&#xff01;现在的大环境不太好&#xff0c;我们需要学会控制自己的消费欲望&#xff0c;把钱花在刀刃上&#xff01;现在宠物市场真的很内卷&#xff0c;很多品牌都在比拼产品的数据和营养成分。很多铲屎…

大数据讲课笔记5.1 初探MapReduce

文章目录 零、学习目标一、导入新课二、新课讲解&#xff08;一&#xff09;MapReduce核心思想&#xff08;二&#xff09;MapReduce编程模型&#xff08;三&#xff09;MapReduce编程实例——词频统计思路1、Map阶段&#xff08;映射阶段&#xff09;2、Reduce阶段&#xff08…

STM32启动流程详解(超全,startup_stm32xx.s分析)

单片机上电后执行的第一段代码 1.初始化堆栈指针 SP_initial_sp 2.初始化 PC 指针Reset_Handler 3.初始化中断向量表 4.配置系统时钟 5.调用 C 库函数_main 初始化用户堆栈&#xff0c;然后进入 main 函数。 在正式讲解之前&#xff0c;我们需要了解STM32的启动模式。 STM32的…

透视数据:数据可视化工具的多重场景应用

数据可视化工具已经成为了许多领域中的重要利器&#xff0c;它们在各种场景下发挥着重要作用。下面我就以可视化从业者的角度简单谈谈数据可视化工具在不同场景下的应用&#xff1a; 企业数据分析与决策支持 在企业层面&#xff0c;数据可视化工具被广泛应用于数据分析和决策…

27jd网卡丢失IP地址问题追踪

一、问题描述及复现步骤 问题描述 启用network服务&#xff0c;关闭NetworkManager服务后&#xff0c;&#xff08;通过 ip a 查看&#xff09; em1网卡丢失IP地址 网络相关组件信息 glib-networking-2.58.0-7.ky10.x86_64 network-scripts-10.01-6.ky10.x86_64 dracut-…

MapReduce综合应用案例 — 电信数据清洗

文章目录 第1关&#xff1a;数据清洗 第1关&#xff1a;数据清洗 测试说明 平台会对你编写的代码进行测试&#xff1a; 评测之前先在命令行启动hadoop&#xff1a;start-all.sh&#xff1b; 点击测评后MySQL所需的数据库和表会自动创建好。 PhoneLog&#xff1a;封装对象 L…

Android定制ROM简介

Android定制ROM简介 这篇文章是为对自定义ROM、AOSP等词汇不太熟悉的技术爱好者和好奇的人写的。我希望通过向您介绍这个世界来开始博客写作。 在我们将注意力转向定制ROM之前&#xff0c;让我们先了解一些基础知识。 什么是操作系统&#xff1f; 维基百科对此的定义简洁而…

探讨二维半导体的概念、应用前景及其与传统半导体的差异

当探讨二维半导体时&#xff0c;我们置身于科技革新的前沿。这种材料以其纳米级薄度和独特电学性质区别于传统半导体&#xff0c;引发了科学界的广泛兴趣。本文将深入探讨二维半导体的概念、应用前景及其与传统半导体的差异。 什么是二维半导体&#xff1f; 二维半导体是由单…
最新文章