Java周记——第二周

一: 常用类

1 包装类

概述:基本数据类型所对应的引用数据类型;Object类可统一所有数据,包装类的默认值是null。

基础数据类型对应包装类:八大基础数据类型中特殊的有两个:int ->Integer ;char -> Character。其他的都是将首字母大写如:long -> Long;float -> Float 等。

基础类型与包装类的转换:

        (1)parseXXX()静态方法(除了Character):将包装类变成基础数据类型;

        (2)valueOf(XXX)静态方法:将基础数据类型转换成包装类。

如:(1)Integer integer new Integer(100);   int num integer.intValue();

        (2)int num2=18;    Integer integer2 Integer.valueOf(num2);

2 String类

2.1 概述

        Java程序中的所有字符串成本(例如"abc")都是此类的实例;

        字符串字面值是常量,创建之后不可改变;

        常用创建方式:String str1 = "Hello"; String str2 = new String("Word");

2.2 常用方法

public char charAt(int index)

根据下标获取字符

public boolean contains(String str)

判断当前字符串中是否包含str
public char[] toCharArray()将字符串转换成数组。
public int indexOf(String str)查找str首次出现的下标,存在,则返回该下标;不 存在则返回-1
public int length()返回字符串的长度
public String trim()去掉字符串前后的空格
public String toUpperCase() 将小写转成大写

public boolean endsWith(String str)

 判断字符串是否以str结尾

public String replace(char oldChar,char newChar)

将旧字符串替换成新字符串
public String[] split(String str) 根据str做拆分

public String subString

(int beginIndex,int endIndex)

在字符串中截取出一个子字符串
public class StringDemo {

	public static void main(String[] args) {
		String a = "abc";
		//xx.charAt(下标),把字符串对应下标位置的字符提取
		System.out.println(a.charAt(2));//输出:c
		System.out.println(a);//输出:abc
		System.out.println("===========");
		
		//判断字符串内是否包含你查询字符串
		//被查询的字符串.contains(要查询的字符串)==>boolean
		System.out.println(a.contains("java"));//输出:false
		System.out.println("===========");
		
		//字符串变成字符数组
		char[] c = a.toCharArray();
		for (int i = c.length-1; i >= 0; i--) {
			System.out.print(c[i]);
		}//输出:cba
        System.out.println();
		System.out.println("===========");
		
		//获取字符串长度  字符串.length()
		System.out.println("23456".length());//输出:5
		System.out.println("===========");
		
		//找字符串中对应字符串第一次出现的下标位置,没有返回-1
		//从前向后
		System.out.println(a.indexOf("a"));//输出:0
		//从后向前
		System.out.println(a.lastIndexOf("a"));//输出:0
		System.out.println("===========");
		
		//去除字符串头和尾的空格
		String b = "  ja  va  ";
		System.out.println(b.length());//输出:10
		System.out.println(b.trim());//只能去除头尾的空格  对中间的空格无效  输出:ja  ja
		System.out.println(b.trim().length());//输出:6
		System.out.println("===========");
		
		//字母的大小写转换
		String s = "jAva";
		String s1 = s.toUpperCase();//转大写字母 
		System.out.println(s1);//输出:JAVA
		String s2 = s1.toLowerCase();//转小写字母
		System.out.println("===========");
		
		//判断字符串是否以xxx结尾 大小写敏感
		System.out.println(s.endsWith("jA"));//判断结尾 输出:false
		System.out.println(s.startsWith("va"));//判断开头  输出:false
		System.out.println("===========");
		
		//字符串.replace(旧字符串,新字符串);   用新字符串替换旧字符串
		String word = "今天下雨";
		word = word.replace("下雨", "阳光明媚");
		System.out.println(word);//输出:今天阳光明媚
		System.out.println("===========");
		
		//将字符串进行分组  目标字符串.split(分组的依据);
		String name = "12,34,56,78";
		String[] str = name.split(",");
		for (String string : str) {
			System.out.println(string);
		}
		System.out.println("===========");
		
		//usbstring(指定下标)  截取指定下标至最后所包含的字符串
		//usbstring(指定下标,末尾下标后一位) 截取指定下标至末尾下标的字符串
		String st = "我要飞的更高,摔得更惨。";
		st = st.substring(2);
		System.out.println(st);//输出:飞的更高,摔得更惨。
	}
}

3 可变字符串

概念:可在内存中创建可变的缓冲空间,存储频繁改变的字符串

可变字符串类(这两个类中方法和属性完全一致):

        (1)StringBuilder:可变长字符串,JDK5.0提供,运行效率快、线程不安全。

        (2)StringBuffer:可变长字符串, JDK1.0 提供,运行效率慢、线程安全。
效率比较:StringBuilder  > StringBuffer > String
常用方法:
方法名属性
public StringBuilder append(String
str)
追加内容。
public StringBuilder insert(int
dstOffset, CharSequence s)
将指定 字符串插入此序列中。
public StringBuilder delete(int start,
int end)
移除此序列的子字符串中的字符。
public StringBuilder replace(int start,
int end, String str)
使用给定字符串替换此序列的子字符串中的字符。
start 开始位置、 end 结束位置。
public int length()
返回长度(字符数)。
public class TestString {

	public static void main(String[] args) {
		StringBuilder sb=new StringBuilder(); 
		//1 append();追加
		sb.append("java世界第一"); 
		System.out.println(sb.toString()); //java世界第一
		sb.append("java真香"); 
		System.out.println(sb.toString()); //java世界第一java真香
		sb.append("java不错"); 
		System.out.println(sb.toString()); //java世界第一java真香java不错
		//2 insert();添加
		sb.insert(0, "我在最前面"); //我在最前面java世界第一java真香java不错
		System.out.println(sb.toString()); 
		//3 replace();替换 
		sb.replace(0, 5, "hello"); 
		System.out.println(sb.toString()); //hellojava世界第一java真香java不错
		//4 delete();删除 
		sb.delete(0, 5); 
		System.out.println(sb.toString()); //java世界第一java真香java不错
		//清空 
		sb.delete(0, sb.length()); 
		System.out.println(sb.length());//0
	}

}

4 BigDecimal类

为什么用:System.out.println(1.0 - 0.9);语句将会输出:0.09999999999999998;这是由于double是近似值存储,使用BigDecimal类会更加精确。

基本用法:java.math包中用来精确计算浮点数:BigDecimal bd=new BigDecimal(“1.0”)语句创建。

常用方法:

BigDecimal add(BigDecimal bd)
                加
BigDecimal subtract(BigDecimal bd)
                减
BigDecimal multiply(BigDecimal bd)
                乘
BigDecimal divide(BigDecimal bd)
                除

5 Date类和Calendar类

Date表示特点的瞬间,精确到毫秒;大部分方法都被Calendar类取代;

1秒=1000毫秒,1毫秒=1000微秒,1微妙=1000纳秒。

Calendar提供了获取和设置各种日历字段的方法;

Calendar类的构造方法为protected修饰,无法直接创建该对象。

常用方法:

static Calendar getInstance()
使用默认时区和区域获取日历
void set(int year,int month,int date,int hourofday,int
minute,int second)
设置日历的年、月、日、时、分、
秒。
int get(int field)
返回给定日历字段的值。字段比如
年、月、日等
void setTime(Date date)
用给定的 Date 设置此日历的时间。
Date-Calendar
Date getTime()
返回一个 Date 表示此日历的时间。
Calendar-Date
void add(int field,int amount)
按照日历的规则,给指定字段添加或
减少时间量
long getTimeInMillis()
毫秒为单位返回该日历的时间值

6 SimpleDateFormat类

SimpleDateFormat以与语言环境有关的方式来格式化(日期->文本)和解析(文本->日期)日期;

模式字母:

        y => 年;M => 月; d => 天数;H => 小时(0-23);m => 分钟;s => 秒;S => 毫秒;

7 System类

        系统类,主要用于获取系统的属性数据和其他操作;

常用方法:

方法名说明
static void arraycopy(...)
复制数组
static long currentTimeMillis()
获取当前系统时间,返回的是毫秒值
static void gc();
建议 JVM 赶快启动垃圾回收器回收垃圾
static void exit(int status)
退出 jvm ,如果参数是 0 表示正常退出 jvm ,非 0 表示异常退出 jvm。

二: 集合

概念:集合是对象的容器,定义了对多个对象进行操作的常用方法。可实现数组的功能。

与数组区别:

        (1)数组长度固定,集合长度不固定;

        (2)数组可以存储基本类型和引用类型,集合只能存储引用类型;

1 Collection体系集合

Collection是集合的根接口,代表一组任意类型的对象,无序,无下标。

常用方法:

boolean add(Object obj)
添加一个对象数据
boolean addAll(Collection c)
将一个集合中的所有对象添加到此集合中
void clear()
清空此集合中的所有对象
boolean contains(Object o)
检查此集合中是否包含 o 对象
boolean equals(Object o)
比较此集合是否与指定对象相等
boolean isEmpty()
判断此集合是否为空
boolean remove(Object o)
在此集合中移除 o 对象
int size()
返回此集合中的元素个数
Object[] toArray()
将此集合转换成数组

2 List接口与实现

特点:有序、有下标、元素可以重复。继承Collection。

常用方法:

void add(int index, Object o)
index 位置插入对象 o
boolean addAll(int index,Collection c)
将一个集合中的元素添加到此集合中的 index 位置。
Object get(int index)
返回集合中指定位置的元素。
List subList(int fromIndex, int toIndex)
返回 fromIndex toIndex 之间的集合元素。

ArrayList:

        特点:使用数组结构存储,查询快、增删慢、线程不安全;实现List接口。

LinkedList:

        特点:链表结构实现,增删快、查询慢、线程不安全;实现List接口。

Vector:

        特点:数组结构实现,查询快、增删慢、线程安全、运行效率比ArrayList较慢。

3 泛型

        概念:Java泛型是JDK1.5中引入的一个新特性,其本质是参数化类型,把类型作为参数传递。常见泛型形式有泛型类、泛型接口、泛型方法、

        语法:<T,...> :T称为类型占位符,表示一种引用类型。

        优点:提高代码的重用性,防止类型转换异常,提高代码的安全性;

4 Collections工具类

集合工具类定义了除存取以外的集合常用方法;

常见方法:

public static void reverse(List<?> list)
反转集合中元素的顺序
public static void shuffle(List<?> list)
随机重置集合元素的顺序
public static void sort(List list) /
升序排序(元素类型必须实现 Comparable 接口)
public static int binarySearch( list, T key)
二分查找

5 Set接口

特点:无序、无下标、元素不可重复。

方法:全部继承自Collection中的方法

使用foreach循环遍历:

        for(数据类型 局部变量:集合名){

                //循环内部的局部变量,代表当次循环从集合中取出的对象

}

HashSet:

        基于HashSet实现元素不重复;JDK1.8之后引入红黑树,提高效率。

        当存入元素的哈希码相同时,会调用==或equals进行确认,结果为true时拒绝后者存入;

LinkedHashSet:

        链表实现的HashSet,按照链表进行存储,即可保留元素的插入顺序。

TreeSet:

        基于排序顺序实现元素不重复;实现了SortedSet接口,对集合元素自动排序;

        元素对象的类型必须实现Comparable接口,指定排序规则;

        通过CompareTo方法确定是否为重复元素。

6 Map接口

        特点:称为”映射“存储一对数据(key-value),键不可重复,值不可重复。

        常用方法:

V put(K key,V value)
将对象存入到集合中,关联键值。
key 重复则覆盖原值。
Object get(Object key)
根据键获取对应的值。
Set keySet()
返回所有 key
Collection values()
返回包含所有值的 Collection 集合。
Set<Map.Entry<K,V>> entrySet()
键值匹配的 Set 集合。

HashMap:

        (1) JDK1.2版本,线程不安全,运行效率快。
        (2)允许用null 作为key或是value。
        (3)存储结构:哈希表。

TreeMap:

        实现了SortedMap接口(Map的子接口),可以对key自动排序,Key需实现Comparable接口。

三: 异常

        概念:程序在运行过程中出现的特殊情况

        必要性:

四: 多线程

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值