2021-5-13

1.API概述

API(application Programming Interface):应用程序编程接口。

如何使用API

  1. 打开帮助文档
  2. 点击显示,找到索引,看到输入框
  3. 你要找谁:在输入框里输入,然后回车
  4. 看包:java.lang下的类不需要导包,其他需要
  5. 看类的解释和说明
  6. 学习构造方法
  7. 使用成员方法

常用API

  1. API概述
  2. String
  3. StringBuilder
  4. ArrayList
  5. FileWriter和FileReader
  6. BufferedWriter和BufferedReader
  7. 常用API练习

  1. String类的概述及构造方法  不可变的
  1. String类概述
  1. 字符串是由多个字符组成的遗传数据。
  2. 字符串可以看成是字符数组。
  1. 构造方法
  1. public String (String original)
  2. Public String(char[] value)
  3. Public String(char[] value,int offset,int count)
  4. 直接赋值也可以是一个对象。

Public class MyString{

Public static void mian(String[] args){

String st=”abc”;//st在栈中,常量池若有abc则直接调用,若无则创建后调用。

String st2=”abc”;

st2=”abc”+”d”;//不能修改字符串本身的值,若修改会在常量池中创建新的对象,abcd

System.out.println(st==st2);//st st2地址相同

}

}

Public class MyString{

Public static void mian(String[] args){

String st=”abc”;

String st2=”ab”;

String st3=”c”;

String st4=st2+st3;//不相当于String st5=”abc”;编译器不会对字符串串变量进行预编译,会产生新的对象

String st5=”ab”+”c”;//拼接 相当于String st5=”abc”;编译器会对字符串的字面量进行预编译。

System.out.println(st5==st);//true

System.out.println(st4==st);//false

}

}

String类的构造器

第一种String类的构造器:

Public class MyString{

Public static void mian(String[] args){

String st= new String(original:“abc”);//String st=”abc”;这行代码创建几个对象 1或者2个。第一步:new String()会在堆内存中创建一个对象;(2)若abc在常量池中,则直接给堆内存,若没有,则常量池先创建abc在给堆内存。

String st2=”abc”; //abc在常量池

System.out.println(st);//abc

System.out.println(st2);//abc

System.out.println(st==st2);//错

String st3=new String(original:”abc”);//abc

System.out.println(st.equals(st2));//true; 比较内容是否相同

}

}

第二种String类的构造器:public String(char[] value)

Public class MyString{

Public static void mian(String[] args){

//将字符数组转换成字符对象

char[] arr={‘a’,’b’,’c’};

String st =new String(arr);

System.out.println(st);//abc

//第三种构造器:public String(char[] value,int offset,int count)

//将字符数组的一部分转换成字符串

char[] arr={‘a’,’b’,’c’,’d’};

String st =new String(arr,offset:0,count:3);

System.out.println(st);//abc从下标为0开始,每3个字符为一个字符串

}

}

3.String的特点

  1. 通过构造方法创建字符串对象 String s=new String(“Hello”);
  2. 直接赋值创建字符串对象(1) String s=”Hello”;(2)String st=new String(“Hello”);

4.String类的判断功能

  1. boolean equals(Object obj)
  2. boolean equals IgnoreCase(String str)
  3. boolean startsWith(String str)
  4. boolean endsWidth(String str)

//判断功能

(1)boolean equals(Object obj)判断字符串内容是否相等

Public class MyString{

Public static void mian(String[] args){

String st=”abc”;

String st2=”abc”;    //String st2=new String(Original:”abc”);

System.out.println(st.equals(st2));//判断内容

System.out.println(st==st2);//判断地址像否相同

}

}

  1. boolean equalsIgnoreCase(String str)//判断字符串内容是否相同,忽略大小写

Public class MyString{

Public static void mian(String[] args){

String st=”abc”;

String st2=”ABC”;  

System.out.println(st.equalsIgnoreCase(st2));true//忽略大小写

}

}

  1. boolean startWith(String str)//判断是否以str参数开头

String st=”abc”;

System.out.println(st.startsWith(“ab”));//ab   true

  1. boolean endsWith(String str)//是否以str结尾

String st=”abc”;

System.out.println(st.endsWith(“c”));//true

  1. String类的获取功能
  1. int length()   //获取字符串的长度
  2. char charAt(int index)   //获取指定位置的字符 String类底层是用字符数组来实现的
  3. int indexOf(String str)    //获取指定字符串的下标
  4. String substring(int start)  //截取字符串
  5. String substring(int start,int end)  //截取字符串 截取时左包右不包

Public class MyString{

Public static void mian(String[] args){

(1)//int length()

String st=”abc”;

System.out.println(st.length());//3

  1. //char charAt(int index)

System.out.println()st.charAt(0);//abc和数组一样,下标从0开始。  输出a

  1. //int indexOf(String str)

System.out.println(st.indexOf(ab));//第一个字符的下标是0

  1. //int substring(int strat)

String st2=st.substring(1);

System.out.println(st2);//bc

  1. //String substring (int start,int end)

String st3= st.substring(1,2);//截取时左包右不包

System.out.println(st3);//b

  1. 补充:

String st=”abc”;

byte[] by=st.getBytes();//将字符串转换成字节数组

System.out.println(Arrays.toString(by));//[97,98,99]

  1. 将字节转换成一个字符串

String st2=new String(by);

System.out.println(st2);//abc

}

}

  1. String类的转换功能
  1. char[] toCharArray()//将字符串转换成字符数组
  2. String toLowerCase()//把大写转换成小写
  3. String toUpperCase()//把小写转换成大写

(1)

String st=”abc”;

Char[] arr=st.toCharArray();

System.out.println(Arrays.toString(arr));//[a,b,c]

(2)

String st=”abc”;

String st2=”ABC”;

System.out.println(st2.toLowerCase());

(3)

System.out.println(st2.toUpperCase());

7.String类的其他功能

  1. 去除字符串两端空格 String trim()  //去掉字符串两端的空格 不能去掉中间空格。
  2. 按照指定符号分割字符串 String[] split(String str)

String st=”  ab  c”;

System.out.println(st.trim());//ab  c

String st=”a:b:c”;

String[] arr=st.split(regex:”:”);

System.out.println(Arrays.toString(arr));[a,b,c]

练习:将字符串 我喜欢java的学习

英文部分转换成字节数组

将java去掉重写组成字符串 ”我喜欢的学习“

  1. StringBuilder类概述及其构造方法  线程不安全

StringBuffere和StringBuilder是一样的,但线程是安全的。

线程安全的没有线程不安全的效率高。

  1. StringBuilder类概述:我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间,而StringBuilder就可以解决这个问题。
  2. StringBuilder和String区别?一个是可变  一个不可变
  3. 构造方法  public StringBuilder()

StringBuilder类的常用方法  可变的字符序列

  1. 添加功能  public StringBuilder append(任意类型)
  2. 反转功能  public StringBuilder reverse()
  3. A:构造方法
  4. StringBuilder()
  5. B:成员方法
  6. Public int capacity()  返回当前容量(理论值)
  7. Public int length()  返回长度 (已经存储的字符个数)
  8. Public StringBuilder append(任意类型)  添加数据类型,并返回自身对象
  9. Public StringBuilder reverse()  反转功能

对字符串频繁修改会造成的后果

同前面的主方法

String st=”abc”;

for(int i=0;i<1000000;i++){

//System.out.print(i);运行速度很快

st+=”a”;//程序会变慢 效率低了修改字符串会产生新的对象,严重时会造成内存溢出

}

//创建一个空的字符串

StringBuilder sb=new StringBuilder();

System.out.println(sb);

//创建一个长度为10的字符串容器

StringBuilder sb2=new StringBuilder(capacity:10);//初始容量是10 指字符串长度是10  若字符串长度超过10会自动扩容

StringBuilder sb3=new StringBuilder(“abc”);

System.out.println(sb3);//abc

  1. 添加功能  public stringBuilder append(任意类型)

StringBuilder sb= new StringBuilder(“abc”);

sb.append(d);//在末尾追加

sb.append(true);//abctrue 可以将任意类型的数据拼接到字符串末位

sb.insert(offset:2,str:bbb);//abbbbctrue 在指定位置插入数据

System.out.println(sb);//abcd

  1. 反转功能 public StringBuider everse()

sb.reverse();

System.out.println(sb);//将字符串反转eurtdcbbbba

  1. 返回当前容量(理论值)public int capacity()

System.out.println(sb.capacity());//19

探索:

StringBuilder sb= new StringBuilder();

System.out.println(sb.capacity());//默认的初始容量是16

StringBuilder sb= new StringBuilder(capacity:5);

System.out.println(sb.capacity());//5  当指定长度时,默认的长度就是指定值

sb.append(abcdef);//扩容 当添加的字符串长度超过初始容量时会进行扩容 扩容后的长度是是原来长度的2倍加2.

System.out.println(sb.capacity());//12

StringBuilder sb= new StringBuilder(“abc”);

System.out.println(sb.capacity());//19

  1. 返回长度(已经存储的字符个数)public int length()

System.out.println(sb.length());//6

//底层维护的是一个可变的字符数组

StringBuider sb=new StringBuilder();

String sb2=new StringBuilder(caoacity:5);

StringBuider sb3=new StringBuilder(“abc”);

sb3.append(“asfsdfsd”);

//扩容的原理是 新添入的字符串长度+原有的字符个数如果大于容量就扩容,扩容之后的长度是原来长度的2倍加2.

如果插入的长度非常长(这种情况不可能有),那么扩容之后的长度要么是数组下标越界,要么是int的最大值-8.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值