Java之小知识点整理(后续会补充)

本文整理了Java的多个核心知识点,包括++运算符的解析,标识符规范,日志级别,HashMap的有序问题,以及开发环境配置等。强调了在++运算中的临时变量原理,标识符的命名规则,日志记录的等级,并提供了解决HashMap插入顺序问题的方案。此外,还涵盖了Java环境配置,finally关键字的注意事项,以及变量和final关键字的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java之小知识点整理(后续会补充)

  • ++ 运算符
  • finally关键字(这里主要讲注意的事项,不讲整个异常体系)
  • java 环境变量设置
  • 标识符规范及一些基本注意事项
  • java变量及final关键字
  • 日志级别
  • 重定向和内部转发
  • 登录拦截
  • 分页逻辑
  • HashMap无法保证put时的顺序,怎样解决?
  • 文件上传
  • GC简介
  • 事务
  • redis简单应用
  • 模糊查询
  • 网站集群部署
  • 为什么不使用jsp而使用模板引擎
  • 单点登录

前言:为什么会写这篇大杂烩呢?
每次学习时,很多小知识点会突然想起来,但是又有点不清晰,此时又需要去百度去找一大堆资料,从中找到令自己满意的。emmm,so,自己就汇总下,以便日后复习,如果有讲错之处,请各位大神指点一下,还有啥补充的,也可以在评论区留言下,有时间我会一一整理的…


++ 运算符

从最浅显的看,i++是在操作之后增加,而++i是在操作之前增加。
那么接下来看一个经典例题(当然,这种操蛋例题正常情况下咱们是不会写的,主要是用来面试笔试为难求职者,考察其各个知识点掌握的程度,不过有些东西了解得细致一点只有好处没有坏处,所以自然咱们就得理清^_^):

public class Demo{

    public static void main(String[] args) {
        int i = 0;
        i = i++;
        System.out.println(i);

        int j = 0;
        // 下面这句编译器会报一个黄色警告
        // The assignment to variable j has no effect(中文释义:变量j的赋值无效 )
        j = ++j;
        System.out.println(j);

    }
}

这段代码运行结果是啥呢?答案是0 和 1。
为什么会这样嘞?
i ++ 运算过程中,先保存自增1之前的值即原值,然后将i 加 1,最后返回之前保存的原值。即 i ++等价代码如下:

temp = i;
i = i + 1;
return temp;

所以i = i++就等价于:

// i 此时等于0,所以temp = 0
temp = i;
// i 此时等于 1
i = i + 1;
// temp又被赋值给i ,所以此时i = 0
i = temp;

而下面那个j = ++j 为啥编译器报一个黄色警告(变量j的赋值无效)?
因为++j操作中是没有缓存变量(temp)去存储j的值的,就相当于一个 j = j + 1操作,而j = ++ j就相当于 j = j = j +1;重复赋值1给j了,相当于无效(此操作不会改变j的值),从这点看,理论上++i操作是比i++操作更高效。

标识符规范及一些基本注意事项

注意事项

  • 大小写敏感:Java 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的。
  • 类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。
  • 方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
  • 源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java。(如果文件名和类名不相同则会导致编译错误)。
  • 主方法入口:所有的 Java 程序由 public static void main(String []args) 方法开始执行。

标识符规范

Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。

  • 所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始
  • 首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何字符组合
  • 关键字或保留字不能用作标识符
  • 标识符是大小写敏感的
  • 合法标识符举例:age、$salary、_value、__1_value
  • 非法标识符举例:123abc、-salary

保留字:goto 、const
关键字有点多不一一例举,不过关键字都是小写,另外,true、false、null 这三个到底是不是关键字我还是有点蒙,不过确定的是,这三个是不能用来做标识符的。

日志级别

日志记录器(Logger)是日志处理的核心组件。log4j具有5种正常级别(Level)。日志记录器(Logger)的可用级别Level (不包括自定义级别 Level), 以下内容就是摘自log4j API (http://jakarta.apache.org/log4j/docs/api/index.html):

static Level WARN

WARN level表明会出现潜在错误的情形。

static Level ERROR

ERROR level指出虽然发生错误事件,但仍然不影响系统的继续运行。

static Level FATAL

FATAL level指出每个严重的错误事件将会导致应用程序的退出。

另外,还有两个可用的特别的日志记录级别: (以下描述来自log4j APIhttp://jakarta.apache.org/log4j/docs/api/index.html):

static Level ALL

ALL Level是最低等级的,用于打开所有日志记录。

static Level OFF

OFF Level是最高等级的,用于关闭所有日志记录。

日志记录器(Logger)的行为是分等级的。如下表所示:

分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是 ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来,也是说大于等于的级别的日志才输出。

日志记录的级别有继承性,子类会记录父类的所有的日志级别。

这个知识点的总结来自于https://www.cnblogs.com/lingduqianli/p/7589173.html

HashMap无法保证put时的顺序,怎样解决?

LinkedHashMap 是HashMap的一个子类,保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.也可以在构造时用带参数,按照应用次数排序。在遍历的时候会比HashMap慢,不过有种情况例外,当HashMap容量很大,实际数据较少时,遍历起来可能会比 LinkedHashMap慢,因为LinkedHashMap的遍历速度只和实际数据有关,和容量无关,而HashMap的遍历速度和他的容量有关。
参考:https://blog.youkuaiyun.com/weixin_43685889/article/details/84107694

Java 开发环境配置

finally关键字注意事项

java变量及final关键字

重定向和内部转发

登录拦截

分页逻辑

<think>好的,用户想学习Java相关的知识点总结,我需要根据提供的引用资料来整理一个清晰的结构。首先,用户提供的引用内容涉及基本数据类型与包装类、自动装箱拆箱、集合框架、hashCode和equals方法,以及运算符的使用。我应该按照逻辑顺序将这些知识点组织起来,确保每个部分都有足够的解释和示例。 首先,基础数据类型和包装类部分,要提到Java为什么引入包装类,比如为了在集合中使用,以及自动装箱拆箱的机制。然后,集合框架部分,用户提到了ArrayList的初始化,这里可以扩展到集合框架的整体结构,比如List、Set、Map的区别。接着是Object类的方法,特别是hashCode和equals,需要解释它们的作用和重写的重要性。运算符部分,用户给的例子是字符串拼接,这里要说明'+'的操作顺序和类型转换的影响。 然后,还需要补充一些用户引用中没有明确提到但重要的Java知识点,比如面向对象特性(封装、继承、多态)、异常处理、多线程、IO流等。这些是Java基础的核心内容,用户可能也需要了解。 在组织内容时,要确保每个知识点都有对应的引用支持,比如引用1提到包装类和自动装箱拆箱,引用2关于集合,引用3和4涉及hashCode、equals和运算符。要注意引用标注的位置,自然地在相关段落末尾添加。 另外,用户提供的示例中有代码块,所以在总结时也应该包含代码示例,比如展示自动装箱拆箱的代码,ArrayList的使用,以及重写equals和hashCode的例子。这有助于用户更直观地理解。 最后,生成相关问题时要基于总结的内容,涵盖主要知识点,比如包装类的作用、集合框架的区别、hashCode与equals的关系、运算符的注意事项,以及面向对象特性等。这样用户可以通过问题进一步巩固知识。 需要检查是否有遗漏的重要知识点,比如接口与抽象类的区别、泛型、注解等,但根据现有引用,可能暂时不深入这些内容,保持回答的基础性和相关性。同时,确保语言简洁,结构清晰,符合用户要求的步骤式解释。</think>### Java 编程语言核心知识点总结 #### 一、基本数据类型与包装类 1. Java 的 8 种基本数据类型:`byte`、`short`、`int`、`long`、`float`、`double`、`char`、`boolean` 对应的包装类:`Byte`、`Short`、`Integer`、`Long`、`Float`、`Double`、`Character`、`Boolean` 作用:**让基本类型可以像对象一样操作**,例如存入集合或使用对象方法[^1]。 2. **自动装箱/拆箱**(Java 5+) - 装箱:`int num = 5; Integer boxedNum = num;` - 拆箱:`Integer boxedNum = 10; int unboxed = boxedNum;` #### 二、集合框架 1. **List 接口**:有序、可重复集合 示例:`List<String> list = new ArrayList<>();`(使用泛型指定元素类型)[^2] 2. **Set 接口**:无序、唯一元素集合(如 `HashSet`) 3. **Map 接口**:键值对存储(如 `HashMap`) #### 三、Object 类核心方法 1. **hashCode()** 作用:返回对象哈希码,用于哈希表(如 `HashMap`)的快速查找 规则:若两个对象 `equals()` 相等,则它们的哈希码必须相同[^3]。 2. **equals()** 作用:比较对象内容是否相等,需与 `hashCode()` 方法逻辑一致 示例:重写自定义类的 `equals()` 方法需同时重写 `hashCode()` #### 四、运算符与字符串 1. **字符串拼接运算符 `+`** 特性:从左到右执行,若左侧为字符串则后续数值自动转为字符串拼接 示例: ```java System.out.println("5+5=" + 5 + 5); // 输出 "5+5=55" System.out.println(5 + 5 + "=5+5"); // 输出 "10=5+5"[^4] ``` #### 五、面向对象特性 1. **封装**:通过 `private` 字段与 `getter/setter` 控制访问 2. **继承**:`extends` 关键字实现类继承(单继承) 3. **多态**:父类引用指向子类对象,结合方法重写实现动态绑定 #### 六、异常处理 1. **try-catch-finally**:捕获异常并处理 2. **throws**:声明方法可能抛出的异常类型 3. 自定义异常:继承 `Exception` 或 `RuntimeException` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值