小码笔记:API
一、Scanner类
可以实现键盘输入数据到程序中
开启一个键盘通道
1.一般使用步骤
1.导包
import 包路径.类名称;
2.创建对象
类名称 对象名 =new 类名称();
3.使用
对象名.成员方法名();
2.匿名对象
- 创建对象的标准格式
类名称 对象名 =new 类名称();
- 匿名对象就是只有右边的对象没有左边的名字 不需要知道对象名称
new 类名称();
- 作用 精简代码,代码优化省内存
1.可以作为参数进行传参
2.作为返回值
3.Scanner类使用步骤
//开启一个键盘通道,跟键盘链接 阻塞线程
1. import java.util.Scanner;
//eclipse报错需要导包Atrl+Shift+O
//IDEA默认自动导包,不用写 手动导包Alt+Enter
2.Scanner sc = new scanner (Syetem.in);
//scanner扫描 只需要开启一次
3.int num = sc.nextInt(); 接收读取的int变量
String str=sc.next(); 接受String
二、Math工具类
java.long.Math
是数学相关的工具类,里面提供了大量的静态方法完成和数学相关的操作
1.static double abs(double num) 获取绝对值,有多种重载形式
2.static double ceil(long num) 向上取整
static double floor(long num) 向下取整
3.static long round(double num) 四舍五入
4.static long Math.random() 随机数生成
int random = (int)(Math.random()*3)
Math.random(); 0-1 随机小数
Math random()*10+1; 1-10随机小数
*(大数-小数+1)+小数
//底层原理是调用Random类 所以数据量大的时候不如直接用Random快
三、String类(非常重要)
1.概念
java.lang.String
不需要导包
-
Java程序中所有双引号字符串,都是该类的对象
-
字符串常量池<在堆内存中>
程序当中直接写上的双引号字符串,就在字符串常量池中。new出来的字符串不在池中 -
字符串特点:
- 字符串的内容永不可变
- 由于内容不可改变,可以共享使用
- 字符串效果相当于char[]
字符数组,但是底层原理是字节数组(byte[]
)
2.构造方法
方法名 | 说明 |
---|---|
public String() | 创建一个空白字符串对象,不含有任何内容 |
public String(char[] arr) | 根据字符数组的内容,来创建字符串对象 |
public String(byte[] arr) | 根据字节数组的内容,来创建字符串对象 |
直接创建 | String str =“A”; |
3.常见成员方法
- 比较
1.boolean ==是进行对象的地址值的比较
2.boolean equals(Object obj) 判断字符串内容是否相等。
只有参数Object对象是字符串并且内容相等才返回true,否则false
boolean equalsIgnoreCase() //忽略字母大小写比较是否相等
boolean equal()是Object类的方法 判断是否同一,String类继承了Object类并重写了equals()方法
3.int compareTo(String str) 字符串比较,前者和后者每一位字符比较
int compareToIgnoreCase(String str) 忽略大小写比较
长度不一样字符不同前者长度-后者长度 长度一样不同字符时立即返回前者-后者
4.toString String类重写了Object类的hashCode()和toString()
toString(){
return getClass().getName()+"@"+Integer.toHexString(hashCode());
}
- 获取
1.int length() 获取字符串含有字符个数,拿到字符串长度
2.char charAt(int index) 获取指定索引的字符(从0开始)
3.int indexOf(String str) 查找参数字符串在本字符串首次出现的的索引位置,找不到返回-1
int lastIndexOf(String str) ...最后一次出现的的索引位置
4.String concat(String str) 连接两个符串 只能用于本身
//String newStr = str.concat(str2);
6.boolean startwith(String str) 判断以什么开头
boolean endwith(String str) 判断以什么结尾
7.boolean contains (String str) 查是否包含字符
// boolean b =str.contains("a");
- 截取 分割
1.String substring(int index) 字符串截取到最后
String substring(int index,int index) 字符串截取,左闭右开区间
//String str1=str.substring(3) 截取开始的位置,一直到最后
//String str1=str.substring(3,7) 截取开始的位置,到后位置 前包后不包
2.String spit(String regex )
//按什么类型分割字符串 参数是正则表达式,按“.”分割必须携程“\\.”
//String[] str1 =str.spit(",") //按逗号分隔
3.String trim() 去除字符串前后空格
String str1=str.replace(" ","") 去除字符串中间的空
- 转换
1.char[] toCharArray() 字符串转成字符数组
//char[] cs =str.toCharArray()
byte[] getBytes() 字符串转字节数组
2.String replace(String a, String b) a字符串替换b
//String str1=str.replace("2",a)
4.String toUpperCase() 转成大写 toLowerCase() 转成小写
//str.toUpperCase().toLowerCase() //字符串的链
四、StringBuilder类
java.lang.StringBuilder
包下
//表示带缓冲可修改的字符串 引用传递
//大量的字符串拼接追加了16位字符的缓存空间
1.StringBuilder和String
- String类
-
字符串是常量;他们的值在创建之后不能更改
字符串的底层是一个被final修饰的数组,不能改变的常量private final byte[] value
; -
进行字符串的相加,内存就会有多个字符的占用,占用空间大,效率低下
String s ="a"+"a"+"a"="abc"
相加过程中会有
"a"
,"b"
,"ab"
,"c"
,"abc"
5个字符串在常量池中
-
- StringBuilder类
- 字符串缓冲区,可以提高字符串的操作效率(可以看成可变长的字符数组)
底层也是一个数组但是没有final修饰,可以改变长
- 字符串缓冲区,可以提高字符串的操作效率(可以看成可变长的字符数组)
byte[] value =new byte[16];
"a"+"b"+"c"="abc"
- StringBuilder在内存中始终是一个数组,占用空间少,效率高,
超出StringBuilder的容量会自动扩容
2.构造方法
public StringBuilder();
public StringBuilder(String str) 创建并将字符串作为参数创建StringBuilder
public StringBuilder(int hc) 创建并设置缓冲空间
3.成员方法
1.append(...) 添加任意类型数据的字符串形式
2.String toString() 将当前StringBuilder对象转化为String对象
3.insert() 在指定位置插入字符串
setCharAt() 在指定位置替换字符串
str.insert(5,"123");
str.setCharAt(5,"123");
4.reverse() 反转
5.delete() 删除字符串
deleteCharAt()删除指定位置的字符
str.delete(4,6 ) //删除4-6位置字符 从0开始 前包后不包
str.delete(4 )
6.replace()替换指定长度上的字符串
str.replace(0,3,"*") //把0-3位置的字符替换成一个"*"
4.StringBuilder和StringBuffer关系
- 相同:StringBuilder 和StringBuffer都继承自 AbstractStringBuilder
- 区别:
- 是SringBuffer有同步锁 //synchronized同步
- StringBuilder提供一个与 StringBuffer 兼容的 API,但不保证同步。
- StringBuilder被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候
如建议优先采用该类,大多数它比 StringBuffer 要快- StringBuffer 可以用于多线程
- StringBuilder用于单线程,由于没有同步,大多数时候比StringBuffer要快
五、Arrays工具类
java.util.Arrays
是一个与数组相关的工具类,里面提供了大量静态方法,用来实现数组常见的操作
常用方法
1.static String toString(数组);
查看数组的值、把数组以字符串的形式展现出来
//[元素1,元素2,元素3...]
2.static void sort(arr);
给数组排序
//如果参数类型是数字数组和字符串默认按升序<按ASCLL码表的字符升序>
//如果参数类型是自定义类型,那么这个自定义类型必须实现Compareable 或者Comparator接口
3.static void fill(arr,99);
初始化指定的值//改数组默认值为99
4.int num = Arrays.binarySearch(arr,9)
查找数组里某个值的位置(默认升序,找不到为负)
5.int [] newarr = Arrays.copyof(arr,10);
拷贝数组 //10为新数组长度 从前面位置开始拷贝 不满取默认值
6.boolean b = Arrays.equals(arr,newarr);
判断数组的值是否相等
六、ArrayList<E.>集合类
java.util.ArrayList
数组的长度不可以发生改变,但是ArrayList集合长度是可以随意变化的
1.<E.>代表泛型
泛型:集合中所有的元素都是同一类型
只能是引用数据类型(类类型),
用基本数据类型使用包装类
2.注意事项
ArrayList<String> ayl =new ArrayList();
System.out.println(list);
//[]
- 注意事项: 对于ArrayList集合,直接打印输出的不是地址,而是内容
无内容得到的是空的中括号
写ArrayList的人Josh Bloch重写了HashCode和toString
方法
3.常用方法
1.boolean add(E element) 向集合中添加元素,类型跟泛型一致,返回添加是否成功
boolean add(int index,E element) 向指定索引添加元素
2.E set(int index ,E element) 修改指定索引的值,返回修改的值
3.E get(int index) 获取指定索引的元素,类型为泛型
4.E remove(int index) 删除指定索引的元素,返回被删除的值
5.int size() 集合长度,元素个数
4.遍历(同数组)
for (int i = 0; i < ayl.size(); i++) {
Student s = ayl.get(i);
System.out.println(s.getName() + "," + s.getAge());
}