首页 > 编程语言 >Java之线程总结、String类

Java之线程总结、String类

时间:2024-12-16 11:24:45浏览次数:7  
标签:Java String 池中 地址 线程 字符串 常量

1、线程的总结

   1)栈管运行,堆管存储 

 

    2)线程的生命周期

    jdk5.0之前

  

jdk4.0之后 有一个枚举类型来表示生命周期的状态 java.lang.Thread.State

   

3)  

 

 

需要考虑非静态的是否唯一,如果不唯一改成静态

 

 4) 饿汉式线程安全,不同线程运行同时读取静态变量地址,而懒汉式存在线程安全问题

  面试官问我:饿汉模式,懒汉模式线程安全吗?我用这个直接绝杀!_饿汉模式是线程安全的吗-CSDN博客

  

  5)Java是抢占式的,高优先级抢占低优先级

  

  6)

   

  7)


 

2、String类

1) 为了GC能够及时回收字符串常量池里不用的数据,后面的版本都将字符串常量池放到了堆中,方法区此时使用本地物理内存。

 

2)当对字符串变量重新赋值时,需要重新指定一个字符串常量的位置进行赋值,并不是在原有的基础上进行更改,例:s2后面获得的是新的一个string对象,s1还是指向原来的地址;

  当对现有的字符串进行拼接时,需要重新开辟空间保存拼接的字符串,不能在原来的位置修改;

  对现有字符串中的内容进行替换时,需要重新开辟空间保存修改后的字符串,并不是在原有的位置修改。

  String是final修饰的,为常量,不可更改。

 

 

 

3) 当常量池中没有对应的字面量时,使用第二种方法需创建两个对象,分别是堆空间中new的对象以及字符串常量池中生成的字面量。s1和s2的地址值不同,但内容相同

 

4)常量+常量 :结果放在字符串常量池中,返回此字面量的地址。此时的常量可能是字面量也可能是final修饰的变量

   变量+常量 或 变量+变量:都会通过new的方式新建一个String对象返回堆空间中此对象的地址,该String对象指向常量池中的相同内容字符串,如果常量池中没有则新建。

 调用字符串的intern():返回字符串常量池中字面量的地址,以上图为例,s2.intern()中value值为0x5566

 

5)方法中基本数据传数据值 引用数据传地址值

字符串具有不可变性,当在方法中给字符串变量重新赋值时,会使得方法中的字符变量重新指向新常量的地址,全局变量仍指向原地址不变。

方法中的str是一个新的局部变量

 

6)bufferReplace里第二行text已经指向了一个新的对象,此时在方法中操作不影响全局地址

String和StringBuffer的详解,联系和区别_stringbuffer和string-CSDN博客

 

7)根据底层逻辑

 

 

8)确定生成的父类对象不能强转成子类,但子类可以转成父类对象,然后再判断该类型是否为某一子类

 

标签:Java,String,池中,地址,线程,字符串,常量
From: https://www.cnblogs.com/exo123/p/18490142

相关文章

  • 使用 JavaScript 进行验证码图片识别
    我们可以使用Node.js环境下的一些库来进行验证码的图像处理和识别,常用的库有sharp(图像处理)和tesseract.js(OCR文字识别)。以下是一个实现验证码识别的基本示例。安装依赖首先,确保你已经安装了Node.js和npm(Node包管理器)。然后在项目目录中安装所需的库:bashnpminit-yn......
  • 基于Java的减肥辅助系统的设计与实现—免费源码分享29327
    目 录1绪论1.1研究背景与意义1.2国内外研究现状1.3论文结构与章节安排2 减肥辅助系统分析2.1可行性分析2.1.1技术可行性分析2.1.2 经济可行性分析2.1.3法律可行性分析2.2系统功能分析2.2.1功能性分析2.2.2非功能性分析2.3 系统用例分......
  • java list 和数组互相转换的一些方法
    在Java中,List和数组(Array) 之间的转换是一个常见的操作。由于它们是不同的数据结构,Java提供了一些方法来在它们之间进行转换。我们会从List到数组和数组到List两种情况分别讨论。1.List转数组假设你有一个`List`类型的对象,想要将其转换为一个数组。你可以使用List`类......
  • 2024年蓝桥杯Java B组省赛真题超详解析(全)
    目录前言第一题『报数游戏』问题描述:解题思路AC代码:第二题『类斐波那契循环数』问题描述解题思路AC代码第三题『分布式队列』问题描述解题思路AC代码第四题『食堂』问题描述评测用例规模与约定解题思路贪心的核心优先级:具体贪心策略步骤AC代码:第五题『最优分组......
  • Java核心技术卷1 第三章选读
    前言本文内容选自Java核心技术卷1第10版,感兴趣的小伙伴可以自行阅读原书,以下内容为本人学习后摘取的片段与大家分享。正文3.3.2浮点类型所有的浮点数值计算都遵循IEEE754规范。具体来说,下面是用于表示溢出和出错情况的三个特殊的浮点数值:正无穷大负无穷大NaN(不......
  • javascript中 import 路径
    import路径import{test}from'./test';花括号import{test}from'./test';importtestfrom'./test';如果有默认导出exportdefault则可以省略花括号,且import的模块名是随意的,如://a.jsexportdefault'test';//b.jsimportafrom'./......
  • 【数据结构与算法】Java描述:JDK17新增常用特性
    前言:从springboot3.0开始,已经不支持JDK8了。参考资料,来自官方博客:https://spring.io/blog/2022/01/20/spring-boot-3-0-0-m1-is-nowavailable?spm=a2c6h.12873639.article-detail.24.766d46b40LM1IV从3.0开始,转变为JDK17。JDK17是LTS(长期支持版),可以免费商用到2029......
  • Easysearch Java SDK 2.0.x 使用指南(一)
    各位Easysearch的小伙伴们,我们前一阵刚把easysearch-client更新到了2.0.2版本!借此详细介绍下新版客户端的使用。新版客户端和1.0版本相比,完全重构,抛弃了旧版客户端的一些历史包袱,从里到外都焕然一新!不管是刚入门的小白还是经验丰富的老司机,2.0.x客户端都能让你开发效率......
  • Java 密封类 (Sealed Classes) 深度解析
    文章目录语法说明定义密封类定义子类使用场景探讨实际应用示例与其他语言特性的结合使用Java作为一种面向对象编程语言,提供了继承机制来实现代码复用和扩展。然而,无限制的继承可能导致代码库变得难以维护,甚至引入安全隐患。为了应对这一挑战,Java引入了密封类的概......
  • Day32-JavaEE应用&Servlet路由技术&UDBC&Mybatis数据库&生命周期
    一,Servlet&路由&周期1,Servlet的含义:Servlet是运行在web服务器或应用服务器上的程序,它是作为来自web浏览器或其他HTTP客户端请求和HTTP服务器上的数据库或应用程序的中间件。使用Servlet可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页2.Servl......