首页 > 编程语言 >Java核心技术学习笔记(二)

Java核心技术学习笔记(二)

时间:2024-07-08 11:10:00浏览次数:20  
标签:缓存 Java 核心技术 笔记 StingBuilder 拼接 线程 使用 字符串

1、字符串的不可变的体现:
缓存:两个内容相同的字符串变量在字符串池中指向同一个字符串对象,保证修改其中一个,另一个不会改变
安全性:敏感数据存储成字符串,保证数据唯一准确性
线程安全:不可变性会自动使字符串成为线程安全的
hashCode缓存:在String类中被重写,以方便缓存,确保返回相同的值
性能:字符串池和hashCode缓存
2、JDK版本小于1.7,使用String的subString方法一定要注意避免内存泄露
JDK6调用subString方法是,会创建一个新的String对象,但这个值依然指向堆中的同一个字符数组,如果这个字符串很大一直被引用,无法被回收,
进而导致内存泄露
JDK7是通过创建一个新的字符串,避免对老字符串的引用,从而解决内存泄露的问题
3、replace(a,H):将字符串中的a替换所有H
replaceFirst(a,H):将第一个a替换成H
replaceAll(a,H)将所有a换成H
4、java中使用+对字符串的拼接,其实现原理是使用StringBuilder.append完成字符串拼接的
5、concat实现字符串拼接:首先创建一个字符数组,长度是已有字符串和待拼接字符串的长度之和,在把两个字符串的值复制到新的字符数组中,
然后使用这个数组创建一个新的Sting对象并返回
6、StingBuffer和StingBuilder(不是线程安全的)
7、StringUtils.join
8、几种字符串拼接的效率:StingBuilder<StingBuffer<concat<+<StringUtils.join
9、如果不是在循环体中进行字符串拼接,直接使用+
如果在并发场景中进行字符串拼接,使用StingBuffer代替StingBuilder
10、如果是简单的字符串拼接,直接使用+
若干在for循环中进行字符串拼接,使用StingBuffer代替StingBuilder
如果是通过一个lsit进行字符串拼接,使用StringJoiner
11、finally不会执行的几种情况:
System.exit()方法被执行
Runtime.getRuntime().halt()方法被执行
try或catch中有死循环
操作系统强制杀掉JVM进程,如执行了kill -9
其他原因导致虚拟机崩溃了
虚拟机所运行的环境挂了,如计算机电源断了
finally块即将被后台线程执行前,其他所有非后台线程都已执行完毕

标签:缓存,Java,核心技术,笔记,StingBuilder,拼接,线程,使用,字符串
From: https://www.cnblogs.com/youSeeAgain/p/18289520

相关文章

  • Java计算机毕业设计的软件推荐平台(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,软件应用已成为人们日常生活和工作中不可或缺的一部分。然而,面对海量的软件资源,用户往往难以快速找到符合自身需求的软件,同时......
  • Java计算机毕业设计的思政分享平台(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在全球化与信息化高速发展的今天,思想政治教育面临着前所未有的挑战与机遇。一方面,多元文化的交融与碰撞使得青年学生的思想观念更加复杂多样;另一方面......
  • Java计算机毕业设计的图书管理系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展和知识经济的兴起,图书馆作为知识传播与存储的重要机构,其管理效率与服务质量直接关系到读者的满意度与知识获取的便捷性。传统......
  • 数据库和JDBC:Java中的数据库操作与连接池管理
    引言在Java应用程序中,数据库操作是一项基本且关键的功能。Java数据库连接(JDBC)是Java语言中用于执行SQL语句的API,它提供了一种标准的方法,用于连接和操作数据库。此外,数据库连接池是提高数据库操作性能的重要工具,它允许多个客户端共享一个固定数量的数据库连接,而不是为每个用户......
  • 微服务架构:设计理念、优势与Java技术栈实践
    引言        微服务架构是一种软件开发架构风格,它将一个单一的应用程序划分为一组小型、松散耦合的服务。每个服务实现特定的业务功能,并通过轻量级的通信机制(通常是HTTPRESTfulAPI)进行交互。微服务架构在近年来逐渐成为构建大型、复杂系统的首选方法。本文将介绍微......
  • Java研学-Shiro安全框架(三)
    五Shiro加密1介绍  如何实现项目中密码加密(这里我们采用的是MD5加密)的功能:1.添加用户的时候,对用户的密码进行加密;2.登录时,按照相同的算法对表单提交的密码进行加密然后再和数据库中的加密过的数据进行匹配  MD5加密特点:属于不可逆的加密算法(只能从明文→密文,S......
  • GERL论文阅读笔记
    GraphEnhancedRepresentationLearningforNewsRecommendation论文阅读笔记这篇文章是2020年的,也算是比较老的了,但是比较经典,这里来读一下Abstract存在的问题:​ 现有的新闻推荐方法通过从新闻内容和用户与新闻的直接交互(如点击)中建立精确的新闻表征来实现个性化,但忽略了用......
  • SSM-企业人事信息管理系统-98194(免费领源码)可做计算机毕业设计JAVA、PHP、爬虫、APP、
    企业人事信息管理系统的设计与实现摘 要由于数据库和数据仓库技术的快速发展,企业人事信息管理系统建设越来越向模块化、智能化、自我服务和管理科学化的方向发展。人事管理系统对处理对象和服务对象,自身的系统结构,处理能力,都将适应技术发展的要求发生重大的变化。企业人事......
  • 木舟0基础学习Java的第十三天(Collection集合框架)
    Collection(根接口)集合框架数组和集合的区别:数组:既可以存储基本数据类型(值)又可以存储引用数据类型(地址值)    长度:数组的长度是固定的不能自动增长    使用环境:元素个数固定的时候集合:只能存储引用数据类型(对象)也可以存储基本数据类型(存储基本数据类型会自动......
  • Halcon学习笔记(3):WPF 框架搭建,MaterialDesign+Prism
    目录前言环境Nuget安装新建WPF类库项目初始化PrismApp启动页初始化重写MainView前言其实我更喜欢CommunityToolkit.mvvm+HandyControl。但是因为找工作,你不能去抗拒新事物。这里就当体验一下完整的流程好了。环境windows11.netcore8.0Nuget安装新建WPF类库项目新......