首页 > 编程语言 >Java基础:Api 文档注释,字符串种类,String字符串创建,特点及常用方法

Java基础:Api 文档注释,字符串种类,String字符串创建,特点及常用方法

时间:2024-09-17 17:50:06浏览次数:15  
标签:Java String System println 字符串 new out

# 1 API文档注释

* 有三种注释
  1. `单行注释  //`
  2. `多行注释 /*    */`
  3. `文档注释 /**  */`

* 文档注释一般建议写在类, 属性和方法上。jdk提供了javadoc.exe工具

  对程序的所有类及属性和方法生成一个说明文档  :API文档

* API : Application Program Interface  应用程序接口

 

  ​            API文档中可以告诉使用者,都有哪些类, 类有哪些属性,类有哪些方法

  ​            方法叫什么名,需要传递几个参数,都是什么类型的,需要返回什么类型的数据以及方法的作用

 

* jdk API [官方API文档 (Java SE 22 & JDK 22) (oracle.com)](https://docs.oracle.com/en/java/javase/22/docs/api/)

 

 

# 2 字符串

* 我们常用的字符串有两种

  1. String 不可变字符串

     String字符串一旦创建,其内容和长度就不能再被改变

     如果通过一些String的方法得到了一个不同内容的字符串,那一定是产生了新的字符串对象

     "abc".toUpperCase()

  2. StringBuilder 可变字符串

     StringBuilder字符串对象创建后, 其内容和长度都可以改变。

     从一个内容到另一个内容,在内存中依然只有这一个StringBuilder字符串对象

 

要求:循环99次, 每次都为字符串增加一个字母9


String s = "" ;
for(int i=0;i<99;i++){
    s += "9" ;
}
 

## 2.1 String字符串

### 创建方式

1. 使用构造器创建 (好多构造器)
   String s = new String(); //创建了一个String对象,但不包含任何内容
   String s = new String("BUKA") ;
   String s = new String(new char[]{'b','u','k','a'}) ;
   String s = new String(new byte[]{98,121,105,97});
   

2. 直接双引号创建

   
   String s = "" ;
   String s = "buka" ;
   

 

> 注意

* 使用双引号包含一组字符,会在jvm内存中产生一个字符串对象

* 同时这个字符串对象会被存储在JVM内存中的一个特殊位置,称为:常量区

* 常量区中存储的字符串不能重复,也就是同一个内容的字符串只会有一份

* 使用双引号包含的字符串,会优先在常量区中找,存在就返回找到的字符串对象,不存在会创建新对象

  
  String s1 = "buka" ;
  String s2 = "buka" ;
  //在内存当中产生了1个字符串对象
  s1 == s2  ---> true
 

  

* 当使用构造器常见字符串对象时,一定会产生新的字符串对象

  ```java
  String s1 = new String("buka");
  String s2 = new String("buka") ;
  s1 == s2 ---> false
  ```

 

* 思考:下面代码在内存中产生了多少个字符串对象?

  ```java
  String s = new String("buka") ;
  
  String s = new String(new char[]{'b','u','k','a'}) ;
  ```

 

### String不可变特性

* 基于String源码去了解


public final class String
    implements java.io.Serializable, Comparable, CharSequence {
    /** The value is used for character storage. */
    private final char value[];
}
 

* String底层使用一个char[]存储字符串内容
* 同时这个字符数组是用final修饰的,final修饰的变量不能被改变(常量)
* value这个变量中存储的是什么?  是字符数组对象的地址
* 因为final修饰,所以这个地址不能变,数组一旦创建长度不能变,所以String长度不能变。

 

* 理论上数组的长度不可变,但数组的内容是可以改变的。
* 为什么String是内容不可变的字符串呢?
  * 因为String没有对外提供可以改变数组内容的方法
  * 所以我们在外部使用String时,无法改变内部字符数组的内容  (封装)

 

### String常用方法


public static void main(String[] args) {
    String s = "buka is good !!!" ;

    System.out.println(s.length()); //获得字符串中字符的长度
    System.out.println(s.charAt(5));//获得指定索引位置的字符 i
    System.out.println(s.startsWith("buka")); //判断字符串是否以指定的内容开头
    System.out.println(s.endsWith("!!!")); //判断字符串是否以指定的内容结尾
    System.out.println(s.equals("BUKA is good !!!")); //比较两个字符串内容是否相等
    System.out.println(s.equalsIgnoreCase("BUKA IS GOOD !!!"));//忽略大小写比较
    System.out.println(s.indexOf("Is")); //获得指定内容在字符串中第一次出现的位置,以首字母位置为准。不存在返回-1
    System.out.println(s.indexOf("o",10)); //从定的位置向后找第一次出现内容的位置,这个位置是整个字符串中的位置
    System.out.println(s.lastIndexOf("o")); //从后面向前找到第一次出现指定内容的位置,这个位置是整个字符串的位置
    System.out.println(s.trim()); //去掉前后空格
    System.out.println(s.replace("buka","BUKA")); //用一个新内容,替换字符串中所有的指定的老内容
    System.out.println(s.toLowerCase()); //将字符串中所有的字母变小写
    System.out.println(s.toUpperCase());//将字符串中所有的字母变大写
    System.out.println(s.contains("is")); //判断字符串中是否包含指定的子内容
    System.out.println(s.concat("abc"));//连接一个新字符串,类似于+的作用,但内部机制不同
    System.out.println(s.substring(5)); //从指定位置截取后面的所有内容
    System.out.println(s.substring(5,7));//截取指定范围内的内容  左闭右开 [5,7)
    System.out.println(Arrays.toString(s.split(" "))); //按照指定的符号对字符串内容进行拆分,返回字符串数组

}
 

 

 

标签:Java,String,System,println,字符串,new,out
From: https://blog.csdn.net/weixin_53755148/article/details/142285859

相关文章

  • Java 性能调优:优化 GC 线程设置
    垃圾回收器使用一组称为GC线程的线程来执行回收工作。有时JVM可能会分配过多或过少的GC线程。本文将讨论JVM为什么会出现这种情况、其影响以及可能的解决方案。1咋查找应用程序的GC线程数量进行线程转储分析来确定应用程序的GC线程数量:从生产服务器捕获threaddu......
  • 计算机毕业设计推荐-基于Java的小区物业管理系统
    精彩专栏推荐订阅:在下方主页......
  • java计算机毕业设计云计算的城乡医疗卫生服务系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,云计算作为新一代信息技术的核心,正深刻改变着各行各业的服务模式与效率。在医疗卫生领域,面对城乡医疗资源分布不均、信息不对......
  • java计算机毕业设计交通事故档案管理平台(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着城市化进程的加速和机动车保有量的持续增长,交通事故已成为影响社会公共安全与经济发展的重要因素之一。传统的手工档案管理方式在面对海量、复杂......
  • java计算机毕业设计美国职业篮球联赛信息平台(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景:在全球化与数字化并进的今天,体育产业尤其是职业篮球运动,已成为连接全球亿万球迷情感的桥梁,其影响力远超体育竞技本身。美国职业篮球联赛(NBA),作为全球......
  • java计算机毕业设计农村商业银行贷款交易处理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着农村金融市场的日益活跃与农民金融需求的不断增长,农村商业银行作为服务“三农”的主力军,其贷款交易处理系统的效能与智能化水平直接影响到农村金......
  • 章13——常用类——String类
    String类的继承关系final约束的是不可以指向新的地址空间,但是单个值变化还是可以的课堂练习publicStringintern()方法返回的是常量池的地址(对象)仔细理解String类的内存分配:总结Strings1="a";Strings2=newString("a");两种方式分配内存的方式不同,常量......
  • 基于Java+Vue+Mysql的人力资源管理系统:简单易用,高效协同(项目源码分享)
      前言:eHR(ElectronicHumanResources)人力资源管理系统是一个综合性的软件平台,用于管理组织的人力资源相关的各种活动和数据。该系统可以显著提高人力资源部门的工作效率,确保数据准确性和一致性,同时提供决策支持。以下是eHR人力资源管理系统的六个主要模块及其功能的简要介......
  • java实现角色及菜单权限
    在Java中实现角色和菜单权限管理涉及到用户角色、菜单权限和访问控制的设计。以下是一个基本的实现思路和示例代码来展示如何在Java应用程序中实现角色和菜单权限管理:1.定义数据模型首先,定义角色(Role)、菜单(Menu)和权限(Permission)的数据模型。importjava.util.Set;//角色类......
  • 关于Java使用MinIO文件服务器操作文件
    Java使用Minio上传文件示例代码1.Minio介绍MinIO是一个基于ApacheLicensev3.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5......