String类

java.lang.String 类代表字符串。Java程序中所有的字符串文字(例如 “abc” )都可以被看作是实现此类的实例

构造方法

java.lang.String :此类不需要导入。

代码如下:

public static void main(String[] args) {
//1.String() 创建一个空的字符串对象
String str1=new String();
System.out.println("str1: "+str1);
// 2.String(String original) 根据字符串来创建一个字符串对象
String str2=new String("abc");
System.out.println(str2);
// 3.String(char[] value) 通过字符数组来创建字符串对象
char[] chs={'A','B','C','D','E'};
String str3 = new String(chs);
System.out.println(str3);
// 4.String(byte[] bytes) 通过字节数组来构造新的字符串对象
byte[] bytes={97,98,99,100,101};
String str4 = new String(bytes);
System.out.println(str4);
// 5.String(byte[] bytes, int offset, int length) 通过字节数组一部分来构造新的字符串对象
String str5 = new String(bytes, 1, 2);
System.out.println(str5);
}

String特点

  1. 字符串不变:字符串的值在创建后不能被更改。
String s1="abc";
s1+="d";
System.out.println(s1); //"abcd"
//内存中有"abc","abcd"两个对象,s1从指向"abc",改变指向,指向了"abcd"
  1. 因为String对象是不可变的,所以它们可以被共享。
String s1="abc";
String s2="abc";
//内存中只有一个"abc"对象被创建,同时被s1和s2共享。

常用方法

判断功能的方法

public static void main(String[] args) {
//创建字符串对象
String s1="abcd";
String s2="abcd";
String s3="ABCD";
//boolean equals•(Object anObject) 将此字符串与指定对象进行比较。
System.out.println(s1.equals(s2)); //true
System.out.println(s1.equals(s3)); //false
System.out.println("----------------");
//boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
System.out.println(s1.equalsIgnoreCase(s2)); //true
System.out.println(s1.equalsIgnoreCase(s3)); //true
System.out.println("----------------");
}

获取功能的方法

public static void main(String[] args) {
String str="HelloWorld";
//public int length () :返回此字符串的长度。
System.out.println(str.length());
System.out.println("---------------");
//public String concat (String str) :将指定的字符串连接到该字符串的末尾。
String str2 = str.concat("_Java");
System.out.println(str2);
System.out.println("---------------");
//public char charAt (int index) :返回指定索引处的 char值。
char c1 = str2.charAt(0);
char c2 = str2.charAt(1);
System.out.println(c1);
System.out.println(c2);
System.out.println("---------------");
//public int indexOf (String str) :返回指定子字符串第一次出现在该字符串内的索引。
int a = str.indexOf("o");
int b = str.indexOf("l");
int c = str.indexOf("ll");
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println("---------------");
/*
public String substring (int beginIndex) :返回一个子字符串,
从beginIndex开始截取字符串到字符串结尾。
*/
String sub1 = str.substring(5);
System.out.println(sub1);
System.out.println("---------------");
/*
public String substring (int beginIndex, int endIndex) :返回一个子字符串,从beginIndex到
endIndex截取字符串。含beginIndex,不含endIndex。
*/
String sub2 = str.substring(2, 4);
System.out.println(sub2);
System.out.println("---------------");
}

转换功能的方法

public static void main(String[] args) {
String str="abcde";
//public char[] toCharArray () :将此字符串转换为新的字符数组。
char[] chars = str.toCharArray();
for(int i=0;i<chars.length;i++){
System.out.print(chars[i]+",");
}
System.out.println("\n-------------");
//public byte[] getBytes ():使用平台的默认字符集将该 String编码转换为新的字节数组。
byte[] bytes = str.getBytes();
for(int i=0;i<bytes.length;i++){
System.out.print(bytes[i]+",");
}
System.out.println("\n-------------");
//public String toLowerCase() :使用默认语言环境的规则将此 String所有字符转换为小写。
String lowerCase = str.toLowerCase();
System.out.println(lowerCase);
System.out.println("-------------");
//public String toUpperCase() :将此 String所有字符转换为大写,使用默认语言环境的规则。
String upperCase = str.toUpperCase();
System.out.println(upperCase);
System.out.println("-------------");
//public String replace (CharSequence target, CharSequence replacement) :将与target匹配的字
符串使用replacement字符串替换。
String str2="HelloWorld";
String str3 = str2.replace("l", "L");
System.out.println(str2); //注意,replace会返回一个新的字符串,新字符串才是被替换后的。这里输出
HelloWorld
System.out.println(str3); //HeLLoWorLd
}

分割功能的方法

public static void main(String[] args) {
String str="你好,我叫张三,我喜欢java";
String[] strs = str.split(","); //["你好","我叫张三","我喜欢java"]
for(int i=0;i<strs.length;i++){
System.out.println(strs[i]);
}
}

常量池
常量池也是JVM中的一块内存区域,在JDK1.6及以前,常量池是存储在方法区的,在JDK1.7之后,常量池被划分到了堆内存。常量池的东西只会保存一份

String s1="abc";
String s2="abc";
System.out.println(s1==s2); //返回true

因为常量池的东西只保存一份,因此 s1==s2 返回的是 true

StringBuilder类

java.lang.StringBuilder又称为可变字符序列,它是一个类似于 String 的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容。

构造方法

public StringBuilder() :构造一个空的StringBuilder容器。

public StringBuilder(String str) :构造一StringBuilder容器,并将字符串添加进去

public class Demo{
public static void main(String[] args) {
StringBuilder sb1 = new StringBuilder();
System.out.println(sb1); // (空白)
// 使用带参构造
StringBuilder sb2 = new StringBuilder("abcd");
System.out.println(sb2); //abcd
}
}

常用方法

append方法
append方法具有多种重载形式,可以接收任意类型的参数。任何数据作为参数都会将对应的字符串内容添加到StringBuilder中。

public class Demo{
public static void main(String[] args) {
//创建对象
StringBuilder builder = new StringBuilder();
//public StringBuilder append(任意类型)
StringBuilder builder2 = builder.append("hello");
//对比一下
System.out.println("builder:"+builder);
System.out.println("builder2:"+builder2);
System.out.println(builder == builder2); //true
// 可以添加 任何类型
builder.append("hello");
builder.append("world");
builder.append(true);
builder.append(100);
// 在我们开发中,会遇到调用一个方法后,返回一个对象的情况。然后使用返回的对象继续调用方法。
// 这种时候,我们就可以把代码现在一起,如append方法一样,代码如下
//链式编程
builder.append("hello").append("world").append(true).append(100);
System.out.println("builder:"+builder);
}
}

toString方法
通过toString方法,StringBuilder对象将会转换为不可变的String对象

public class Demo{
public static void main(String[] args) {
// 链式创建
StringBuilder sb = new StringBuilder("Hello").append("World").append("Java");
// 调用方法
String str = sb.toString();
System.out.println(str); // HelloWorldJava
}
}

Arrays类

java.util.Arrays 此类包含用来操作数组的各种方法,比如排序和搜索等。其所有方法均为静态方法

操作数组的方法

将数组转换成字符串

public static void main(String[] args) {
int[] arr={24,546,7,5678,58,76,83,45,435,34};
System.out.println(arr); //[I@2460c14f
//将数组转换成字符串
String str = Arrays.toString(arr); //[24, 546, 7, 5678, 58, 76, 83, 45, 435, 34]
System.out.println(str);
}

数组按数字升序进行排序

public static void main(String[] args) {
int[] arr={24,546,7,5678,58,76,83,45,435,34};
System.out.println("排序前: "+Arrays.toString(arr));
//将数组升序排序
Arrays.sort(arr);
System.out.println("排序后: "+Arrays.toString(arr));
}

Math类

java.lang.Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数,其所有方法均为静态方法

基本运算的方法

返回 double 值的绝对值

double d1 = Math.abs(-5); //d1的值为5
double d2 = Math.abs(5); //d2的值为5

返回大于等于参数的最小的整数。(向上取整)

double d1 = Math.ceil(3.3); //d1的值为 4.0
double d2 = Math.ceil(-3.3); //d2的值为 -3.0
double d3 = Math.ceil(5.1); //d3的值为 6.0

返回小于等于参数最大的整数。(向下取整)

double d1 = Math.floor(3.3); //d1的值为3.0
double d2 = Math.floor(-3.3); //d2的值为-4.0
double d3 = Math.floor(5.1); //d3的值为 5.0

返回最接近参数的 long。(相当于四舍五入方法)

long d1 = Math.round(5.5); //d1的值为6.0
long d2 = Math.round(5.4); //d2的值为5.0

java_String类、StringBuilder类、Arrays类、Math类的使用的更多相关文章

  1. 带有静态方法的类(java中的math类)

    带有静态方法的类通常(虽然不一定是这样)不打算被初始化. 可以用私有构造函数来限制非抽象类被初始化. 例如,java中的math类.它让构造函数标记为私有,所以你无法创建Math的实例.但Math类却 ...

  2. JAVA基础学习之final关键字、遍历集合、日期类对象的使用、Math类对象的使用、Runtime类对象的使用、时间对象Date(两个日期相减)(5)

    1.final关键字和.net中的const关键字一样,是常量的修饰符,但是final还可以修饰类.方法.写法规范:常量所有字母都大写,多个单词中间用 "_"连接. 2.遍历集合A ...

  3. Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类

    一.Scanner类 1.除了八种基本数据类型,其他都是引用类型: 引用类型使用三步骤: 2.Scanner类 引用jdk提供的类,Scanner在java.util包下,不在java.lang包(S ...

  4. 01 语言基础+高级:1-3 常用API第一部分_day08【String类、static、Arrays类、Math类】

    day08[String类.static.Arrays类.Math类] String类static关键字Arrays类Math类 教学目标能够使用String类的构造方法创建字符串对象能够明确Stri ...

  5. java System类、Math类、Arrays类

    一 System类 1.概念 在API中System类介绍的比较简单,我们给出定义,System中代表程序所在系统,提供了对应 的一些系统属性信息,和系统操作. System类不能手动创建对象,因为构 ...

  6. Java学习笔记-Math类

    并非所有的类都需要main方法.Math类和JOptionPane类都没有main方法.这些类中所包含的方法主要是为了供其他类使用. package welcome; public class Tes ...

  7. 构造方法,重载,static,math类(java基础知识七)

    1.构造方法概述和格式 * A:构造方法概述和作用     * 给对象的数据(属性)进行初始化 * B:构造方法格式特点     * a:方法名与类名相同(大小也要与类名一致)     * b:没有返 ...

  8. Java常用API(Math类)

    Java常用API(Math类) Math类的作用 java.lang.Math 类包含用于执行基本数学运算的方法,如初等指数.对数.平方根和三角函数.类似这样的工具 类,其所有方法均为静态方法,并且 ...

  9. Java 中 常用API概述之 Math, Object, String,StringBuffer类,Arrays,Integer类

    Math Math类包含执行基本数字运算的方法,如基本指数,对数,平方根和三角函数. 与StrictMath类的一些数字方法不同,Math类的StrictMath所有Math都没有定义为返回比特位相同 ...

随机推荐

  1. jpa随手笔记

    jpa注解1.设置Pojo为实体@Entity //标识这个pojo是一个jpa实体 2.设置表名@Table(name = "users") //指定表名为users 3.设置主 ...

  2. OSCP Learning Notes - WebApp Exploitation(5)

    Remote File Inclusion[RFI] Prepare: Download the DVWA from the following website and deploy it on yo ...

  3. Markdown 教程之编辑器

    1. Typora 编辑器 Typora 是一款支持实时预览的 Markdown 文本编辑器.它有 OS X.Windows.Linux 三个平台的版本,并且由于仍在测试中,是完全免费的. 2. 安装 ...

  4. JAVA I/O基本操作

    JAVA I/O基本操作 JAVA文件操作 JAVA字节流 JAVA字符流 JAVA缓存流 JAVA对象流 JAVA数据流 本文主要借鉴以下博客和网站: how2j.cn 深入理解java中的I/O ...

  5. Logging with ElasticSearch, Kibana, ASP.NET Core and Docker

    好久不见,前两周经历了人生第一次"伪牛市",基金和股市大起大落,更加坚信"你永远赚不到超出你认知范围之外的钱,除非靠着运气",老韭菜诚不欺我也. 当能力与野心不 ...

  6. 搞定 CompletableFuture,并发异步编程和编写串行程序还有什么区别?你们要的多图长文

    你有一个思想,我有一个思想,我们交换后,一个人就有两个思想 If you can NOT explain it simply, you do NOT understand it well enough ...

  7. 如何证明sleep不释放锁,而wait释放锁?

    wait 加锁示例 public class WaitDemo { private static Object locker = new Object(); public static void ma ...

  8. java opencsv解析csv文件

    记一次使用opencsv解析csv文件时碰到的坑 最近在开发过程中需要解析csv文件,公司用的解析工具是opencsv,在根据opencsv的官方文档去解析时发现csv文件中含有繁体字,使用其自带的C ...

  9. EOJ Monthly 2019.11 A(进制转换)

    "欢迎您乘坐东方航空公司航班 MU5692 由银川前往上海......" "我们的飞机很快就要起飞了,请收起小桌板,摘下耳机......" 收起了小桌板,摘下了 ...

  10. Huffuman树--------找最值学会用sort和cmp

    问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, …, pn-1},用这列数构造Huffman树的过程如下: 1. ...