个人Java基础总结

目录

0x00 前言

0x01 内容理解

Java的特点

Java核心机制

Java环境

Java的注释

Java API 文档

Java开发步骤

Java命名规范

变量的类型

基本数据类型之间的运算规则

位运算符相关

二维数组定义

随机值生成

算法的5大特征

十大内部排序算法(数组)

0x03 总结


0x00 前言

温故而知新,自身遗忘点或易错点回顾总结。

0x01 内容理解

Java的特点

  • 面向对象:
    1. 两个要素:类、对象。
    2. 三个特征:封装、继承、多态。
  • 健壮性:
    1. 去除C语言中的指针
    2. 自动的垃圾回收机制—>仍会出现内存泄漏、溢出
  • 跨平台性:write once, run anywhere:一次编译,到处运行。归功于JVM。

Java核心机制

  • 垃圾回收机制:程序运行过程自动进行,但仍会导致内存泄漏和溢出。
  • Java虚拟机(JVM):提供了Java跨平台的可能性。

Java环境

  • JDK:java开发工具包(含编译工具 javac.exe 、打包工具 jar.exe ),含JRE和开发工具集。
  • JRE:Java运行环境,含 JVM 和 Java SE 核心类库。
  • JVM:Java虚拟机。

Java的注释

  • 分类:
    1. 单行注释(//注释):
    2. 多行注释(/*注释*/)
    3. 文档注释(/**注释*/):java特有
  • 相关使用说明:
    1. 单行注释和多行注释,可对所写程序进行解释说明,增强程序可读性,以及方便调试所写代码。
    2. 单行注释和多行注释,其注释内容不参与编译,即字节码文件中不包含该信息。
    3. 文档注释,其注释内容可被JDK中的工具 Javadoc 所解析,进而生成一套以网页文件形式体现该程序的说明文档。
    4. 文档注释不可嵌套使用。

Java API 文档

  • 习惯上:将语言提供的类库,都称为 api 。
  • API 文档:针对于提供的类库如何使用,所给的一个说明书。

Java开发步骤

  1. 在 .java 文件(源文件)中编写Java代码。
  2. 使用 javac 命令( javac.exe )编译 .java 文件,进而生成一个或多个 0.class 文件(字节码文件)。
  3. 通过 java 命令( java.exe )运行 .class 文件,从而得到结果。

Java命名规范

  • 包名:多单词组成时,所有字母都小写: xxxyyyzzz 。
  • 类名、接口名:多单词组成时,所有单词的首字母大写: XxxYyyZzz 。
  • 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写: xxxYyyZzz 。
  • 常量名:所有字母都大写。多个单词时每个单词用下划线连接: XXX_YYY_ZZZ 。

变量的类型

  • 数据类型
    1. 基本数据类型
      1. 数值型
        1. 整型:byte(1)、short(2)、int(4)、long(8字节,声明时以 L/l 结尾)
        2. 浮点型:float(4字节,声明时末尾加 f/F ,7位有效数字)、double(8字节,默认使用,14位精度)
      2. 字符型:char(1个字符=2个字节,Unicode字符集)
      3. 布尔型:boolean(可取true,或false)
    2. 引用数据类型
      1. 类(class):字符串包含在其中。
      2. 接口(interface)
      3. 数组(array)

基本数据类型之间的运算规则

  • 前提:不包含 Boolean 类型
  • 自动类型提升:
    1. 结论:小容量数据类型变量与大容量数据类型变量做运算时,结果自动提升为大容量数据类型。注:此处容量大小为类型的数值范围大小,如 float 容量比 long 的大。
    2. 特别的:byte、char、short的变量之间做运算时,结果为int型
    3. byte、char、short --> int --> long --> float --> double
  • 强制类型提升
    1. 自动类型提升运算的逆运算。
    2. 注:可能导致精度损失。

位运算符相关

  • 位运算符的操作数都是整型
  • <<:在一定范围内,每向左移1位,相当于 * 2
  • >>:在一定范围内,每向右移1位,相当于 / 2
  • 异或运算符(^)交换两个数值,突破点:num1 ^ num1 = 0,0 ^ num1 = num1

二维数组定义

  • 静态初始化
    1. int[][] arr =new int[][]{{1,2,3},{4,5,6,7,8}};
    2. int[][] arr = {{1,2,3},{4,5,6,7,8}};
  • 动态初始化:内层数组长度未确定(必须指定其行数
    1. int[][] arr = new int[2][];  arr[0] = new int[]{1,2,3,4};     arr[1] = new int[]{4,5,6,7,8,9};
  • 默认初始化
    1. int[][] arr = new int[2][4];       //4为默认长度,而非上限,后续可扩长

随机值生成

  • 注:[min,max]的公式 (int)(Math.random() * (max - min + 1) + 10)

算法的5大特征

  • 输入:零个或多个有意义的输入。
  • 输出:一个或多个输出。
  • 有穷性:算法运行时间有限,可以结束。
  • 确定性:算法的每一步都有确切含义。
  • 可行性:算法的每一步都清楚且可行。

十大内部排序算法(数组)

  • 选择排序:直接选择排序、堆排序。
  • 交换排序:冒牌排序、快速排序。
  • 插入排序:直接插入排序、折半插入排序、Shell排序。
  • 归并排序
  • 桶式排序
  • 基数排序

0x03 总结

许多遗忘与不懂,再接再励。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值