String
字符串是常量。字符串的对象创建后内容不可改变。
String s ="abc" ; //在程序中出现 ""引的字符串,都是在字符串常量池中创建对象 ,常量池对象是唯一的。
String s1 = new String(); //创建一个空字符串对象。 但不是null
String s2 = new String(new byte[]{97,98,00}); //使用字节数组构造字符串对象
String s3 = new String(new char[]{'a','b','c'}); //使用字符数组构造字符串对象
String s4 = new String(String s);
- String类的常用方法:
- char charAt(int index):查找指定位置的字符
- int indexOf(String str):判断字符串出现的位置
- int compareTo(String anotherString):按字典顺序比较两个字符串
- String substring(int beginIndex, int endIndex):截取子字符串
- String[] split(String regex):字符分割
- String replace(CharSequence target, CharSequence replacement):替换字符串
- String trim():去掉字符串前后空白
- StringBuffer:
- 字符串的组成原理就是通过该类实现的。
- StringBuffer可以对字符串内容进行增删。
- StringBuffer是一个容器。
- 很多方法与String相同。
- StingBuffer是可变长度的。
- StringBuffer特有方法:
- StringBuffer append(int x):将基本数据类型和引用类型数据添加到缓冲区
- 没有添加short,byte,的方法也就是说如果添加的是byte或short会自动提升为int
- 这个方法返回的还是原来的缓冲区对象
- StringBuffer delete(int start, int end ):删除指定角标上的元素,包含头不包含尾
- StringBuffer insert(int index,String str);在指定角标上插入数据
- StringBuffer reverse():反转
- 什么时候用缓冲区呢?
- 当要操作的元素类型不一致,但最终都会转成字符串的时候。就使用StringBuffer
- String,StringBuffer,StringBuilder:
- 1、String相对于其他两者效率低,会在内存中产生过多的字符串对象,容易产生垃圾。
- 因为产生垃圾之后,GC会在一定的条件情况下出来进行垃圾清理,从而拖慢速度。
- 2、StringBuilder中只有一个StringBuilder对象,比String效率高些
- 3、String一旦被初始化不可以被改变
- 4、StringBuilder可以对字符串修改,操作的是一个对象
- 5、StringBuffer 同步(线程安全),多线程使用
- 6、StringBuilder 非同步(线程不安全)jdk1.5的新特性,单线程使用
- 2、扫描器(Scanner):用来从键盘输入读取数据
- nextLine() 获取一行字符串
- nextInt() 获取一个整数
- nextFloat() 获取一个浮点数
- 3、大数字(BigInteger):如果一个很大的整数无法用long来表达时, 就用BigInteger
- add() 加
- subtract() 减
- multiply() 乘
- divide() 除
- mod() 取余
- 4、包装类:JDK提供了对所有数据类型的包装类
- byte >>> Byte
- short >>> Short
- int >>> Integer
- long >>> Long
- double >>> Double
- float >>> Float
- char >>> Character
- boolean >>> Boolean
- 将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据。
- 包装类的常用方法:
- toString方法:用于基本数据类型与字符串 之间的转换
- parseInt方法:Integer.parseInt(String s)
- valueOf方法:Double.valueOf(String s)
- 基本数据类型对象包装类新特性,JDK1.5以后,简化了定义方式:
- Integer x = new Integer(4);可以直接写成
- Integer x = 4;//自动装箱。
- x = x + 5;//自动拆箱。通过intValue方法。x = new Integer(x.intValue()+5);
- 注意:
- 在使用时,Integer x = null;上面的代码就会出现NullPointerException。
- 5、时间类(Date)
- 使用new Date()创建时间对象代表当前系统时间
- 需要使用DateFormat类来进行格式化,才能显示想符合习惯的格式
- Calendar:
- 使用该类对时间进行操作比较方便
- 通过常量来表示时间的各种值,如一年中的某一天,一个月的某一天等
- 将对应的常量作为形参来调用相应的get、add、set方法来操作对象
-
- 6、计时器(Timer):在指定时间或者在指定的延迟之后执行一个任务
- schedule(TimerTask task, Date time)
- schedule(TimerTask task, Date firstTime, long period)
- schedule(TimerTask task, long delay)
- schedule(TimerTask task, long delay, long period)
- 7、系统类(System)
- 静态属性in为标准输入流,属于InputStream类型,read方法返回一个字节,默认指向键盘输入
- 静态属性out为标准打印流,属于PrintStream类型,print方法打印字符,默认打印到屏幕
- 可以用set方法修改属性in和out
- currentTimeMills():获取当前时间的毫秒数 1970年开始
- System.exit():退出Java虚拟机
- System.gc():垃圾回收,Java中的对象成为垃圾之后不会马上回收掉,如果想立即回收可以调用System.gc()
- System.getProperties():获得系统属性
- Runtime:表示系统运行时状态,设计方法是单例模式完成的
- exec方法执行命令
- 8、算数类(Math):该类提供了一些数学运算的方法
- PI 圆周率
- abs() 绝对值
- ceil() 向上取整
- floor() 向下取整
- round() 得到最接近的整数
- max() 返回较大的数
- min() 返回较小
- pow() 计算一个数的指定次幂
- sqrt() 开平方
- cbrt() 开立方
- random() 随机数
- 9、随机数(Random):用来生成随机数
- nextInt() 随机整数
- nextFloat() 随机小数
- nextBoolean() 随机布尔
- 10、工具类(Arrays):提供了对数组的常用操作
- binarySearch();对数组进行二分查找
- sort(); 对数组进行排序
- fill();
- toString([]);将数组转为字符串显示形式,打印结果带中括号的
- asList([]):将数组变成集合。可以通过集合的方法操作数组,但不能进行增删行为
- 将集合变成数组:通过Collection中的toArray(T[] a)通常在传递数组时,长度最好定义为集合的size();
- Collections:提供了对集合的常用操作
- binarySearch(List,key):如果对List进行二分查找,必须要保证该list有序
- sort(list):对List集合进行排序
- sort(list,Comparator)
- max(list):取出集合中的最大值,最小值
- fill(list,value)
- synchronizedList(list)
- reversOrder();---返回的也是比较器
- 两个工具类中的方法都是静态的