学习JAVA第五课:常用API

java官方文档链接:点这里


java.lang包

是java中最基础的核心包,里面包含着最基础的类,比如数学运算和字符串处理等。这个包默认情况下,系统将其自动导入,不需要我们用import再导入到程序中就可以直接使用这个类里面的函数。

java.lang.Math类:负责数学运算

随机数:游戏的精髓
1、数组中放置1-100的数字,随机打乱。
1-100按顺序,随机找两个打乱,打乱多次。

class MathTest{
	public static void main(String[] args){ 
		int[] arr = new int[100];
		for(int i = 0;i <100;i++)
		{
			arr[i] = i+1;
		}
		for(int i = 0;i < 1000;i++)
		{
			int temp;
			int L1 = (int)(Math.random()*100);
			int L2 = (int)(Math.random()*100);
			temp = arr[L1];
			arr[L1] = arr[L2];
			arr[L2] = temp;
		}
	}
}

2、公平的赌博游戏,久赌必输。
100元筹码,随机数,0-0.5之间,赢10元;0.5-1之间,输10元。赢满500走人,其中输光退场。

class MathTest{
	public static void main(String[] args){ 
		int M = 100;
		while(true){
		
			double d= Math.random();
			if(d<0.5) M+=10;
			else M-=10;
			System.out.println("当前财产:"+M);
			if(M==0){System.out.println("输光走人");break;}
			if(M==500){System.out.println("赢钱走人");break;}
		}
	}
}
java.lang.String类:负责字符串处理

1、初始化字符串,有两种方式:
(1)直接赋值

String s1 = "China";

(2)创建字符串对象

String s2 = new String("China");

这两种方法创建的字符串是不同的。
注意:直接赋值,系统为了节省内存,用的是“池机制”。
如何判断两个字符串内容是否相等?显然不能用==
可以用equals函数

String s1 = "China";
String s2 = new String("China");
System.out.println(s1==s2);

//答案
false

System.out.println(s1.equals(s2));


//答案
true

2、charAt函数,找到字符串出现的第一个匹配字符

String s1 = "China";
System.out.println(s1.charAt(1));

//答案

h

2、contains函数,判断字符串中是否有这个匹配字符串

String s1 = "China_Hunan";
System.out.println(s1.contains("nan"));

//答案
true

3、indexOf找到匹配字符在字符串中第一次出现位置

String s1 = "China_Hunan";
System.out.println(s1.indexOf("nan"));

//答案
8

4、replace函数在不改变原来字符串的情况下替换字符串

String s1 = "China_Hunan";
System.out.println(s1.replace("nan","bei"));
System.out.println(s1.indexOf("nan"));//s1没变

//答案
China_Hubei
8

思考:word中经常用到字符串查找,替换操作
请列出java中对应的函数。

java.lang.StringBuffer类:负责字符串处理

StringBuffer是自变型字符串,操作之后,自己变化
s1如果是String,s1.replace(“nan”,“bei”);s1没变
String是非自变型字符串,在字符串频繁操作场合,大大消耗内存

1、append在原有字符串基础上增加字符

StringBuffer sb = new StringBuffer("china_hunan");
sb.append("_hubei");
System.out.println(sb);//sb变了

//答案
china_hunan_hubei

2、replace是用新的字符串替换掉原有字符

StringBuffer sb = new StringBuffer("china_hunan");
sb.append("_hubei");
System.out.println(sb);//sb变了
sb.replace(1,3,"haha");
System.out.println(sb);//sb变了

//答案
china_hunan_hubei
chahana_hunan_hubei
基本数据类型的包装类

int integer
float Float
double Double

重要作用:将字符串转成相应的数值

int i = Integer.parselnt("123");
float f = Float.parseFloat("3.14");
double d = Double.parseFloat("23.123");

如果将数值转成字符串呢?
统一用一个函数:

String.valueOf(各类数值);
java.util包

最重要的是:Java集合框架(变长数组)

List类:一维变长数组,元素有位置信息,可重复

ArrayList 底层用数组存储
LinkedList 底层用链表存储
Vector 实现了多线程的安全
用法完全相同。增删改查

import java.util
class StringTest{
	public static void main(String[] args){
		ArrayList<String> list = new ArrayList<String>();
		list.add("北京");
		list.add("上海");
		list.add("杭州");
		list.add("浙江");
		list,add(2,"巴黎");
		System.out.println(list.get(2));//查找第二个位置上的元素
		list.remove(1);//把第一个位置上的元素去掉
		list.set(2,"纽约");//把第二个位置上的元素改成纽约
		list.indexOf("浙江");//查找元素的位置
		//元素的遍历
		for(String s:list){
			System.out.println(s);
		}
		for(int i = 0;i < list.size();i++){
			System.out.println(list(i));
		}
	}	
}
Set类:一维变长数组,元素没有位置信息,不可重复

HashSet 元素乱序
LinkHashSet 元素保序

增删改查

import java.util
class StringTest{
	public static void main(String[] args){
		HashSet<String> list = new HashSet<String>();
		list.add("北京");
		list.add("上海");
		list.add("杭州");
		list.add("浙江");
		list.remove("浙江");//把叫浙江的元素去掉
		//元素的遍历
		for(String s:list){
			System.out.println(s);
		}
	}	
}

Map类:二维变长数组
keyvalue
姓名张三
性别
住址长沙
籍贯广东

key不可重复,value可以重复

HashMap
LinkedHashMap

作业:输入一个长字符串,显示:里面每一个字符出现的次数
crhanihvwacri parklgrjmevmlijmlrjkvsldmkd

	public static void main(String[] args) {
        String str = "crhanihvwacri parklgrjmevmlijmlrjkvsldmkd";
        char[] chars = str.toCharArray();
        Map<Character, Integer> map = new HashMap();
        for (char c : chars) {
            if (map.containsKey(c)) {
                map.put(c, map.get(c) + 1);
            }else{
                map.put(c,1);
            }
        }
        for (Map.Entry<Character, Integer> entry : map.entrySet()) {
            System.out.println("字符("+entry.getKey()+")出现的次数为:"+entry.getValue());
        }
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值