Java基础学习笔记(五) - 常用的API
API介绍
概念:API 即应用编程程序接口。Java API是JDK中提供给我们使用的类说明文档,这些类将底层的代码实现封装。无需关心这些类是如何实现,只需要学习如何使用。
使用:通过API找到需要使用的类,学习使用构造方法和成员方法。(创建对象,调用即可)
一、Scanner类
功能:解析基本类型和字符串的简单文本扫描器。
构造方法:无参构造 Scanner,生成的值是从指定输入流扫描的。
成员方法:
nextInt 方法会将输入信息记录为int类型。
import java.util.Scanner; //导包
public class TestScanner {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("正在录入数据:");
int a = sc.nextInt();
System.out.println(a); }
}
System.in 表示通过键盘录入数据,然后使用 Scanner类的 nextInt 方法获取输入数据。
使用导包:使用 import 关键字,引入包中的类。java.lang 包下的类无需导入。
二、Random类
功能:生成伪随机数。
构造方法:无参构造随机数生成器。
成员方法:
nextInt 方法会返回一个伪随机数,范围在0(包含)-n(参数,不包含)之间。
import java.util.Random;
public class TestRandom {
public static void main(String[] args){
Random R = new Random(); //创建随机数生成器
System.out.println(R.nextInt(10));
}
}
三、ArrayList类
功能:ArrayList 集合类会创建一个大小可变的数组,用于存储和操作对象数据。
构造方法:无参构造一个空集合。
成员方法:
- add 方法将指定的元素添加到集合的尾部。(添加的数据必须和创建ArrayList对象时声明的数据类型一致)
- remove 方法移除集合指定位置上的元素,并返回被删除的元素。
- get 方法返回集合中指定位置上的元素,并返回获取的元素。
- size 方法返回集合中的元素数量。用于遍历集合是,控制索引,防止指针越界。
import java.util.ArrayList;
public class TestArrayList {
public static void main(String[] args){
//创建对象并声明集合类型为Integer
ArrayList<Integer> list = new ArrayList<>(); //jdk7后的版本右侧<>可不写内容
//添加 int 类型元素
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
System.out.println(list);
//获取指定位置的元素 注意指针越界
System.out.println(list.get(0));
//删除指定位置的元素 注意指针越界
System.out.println(list.remove(1));
//遍历打印
printArrayList(list);
}
//遍历打印
public static void printArrayList(ArrayList<Integer> list){
for (int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
}
}
ArrayList 对象不能存储基本类型,只能存储引用类型的数据,但是可以存储基本数据类型对应的包装类型(见本文第十一节)。
四、String类
功能:类 String 包括用于检查各个字符串的方法。
特点:
- 字符串的值创建后不能更改。
- 可以被共享。
- String底层使用字符数组实现的。“abc”等效于 “char[] data = {'a' ,'b' ,'c' }”。
构造方法:
- 无参构造创建一个新的空字符 String对象。
- char[] value :通过当前参数中的字符数组构造。
- byte[] bytes:通过使用平台默认字符集解码当前参数中的字节数组构造。
public class TestString {
public static void main(String[] args){
//构造方法
//无参构造
String str1 = new String();
//字符数组构造
char chars[] = {'a','b','c'};
String str2 = new String(chars);
//字节数组构造
byte bytes[] = {97,98,99};
String str3 = new String(bytes); } }
成员方法:
方法 | 返回值类型 | 参数 | 功能 |
equals | boolean | object | 用于将此字符串与指定对象比较。相同为true,不同为false。 |
equalsIgnoreCase | boolean |
str |
equalsIgnoreCase 方法和 equals 方法相同,只不过在比较时会忽略大小写。 |
length | int | 返回字符串的长度 | |
concat | String | str | 将指定的字符串连接到该字符串的末尾 |
charAt | char | index | 返回指定索引处的char值 |
indexOf | int | str | 返回指定字符串第一次出现在该字符串内的索引 |
substring | String | beginIndex,endIndex |
无endIndex从beginIndex到结尾截取字符串 有endIndex从beginIndex到endIndex(不含endIndex) |
toCharArray | char[] | 将字符串转换为新的字符数组 | |
getBytes | byte[] | 使用平台默认字符集将String转换为新的字节数组 | |
replace | String | targe,replacement | 将与target匹配的字符串替换为replacement |
split | String[] | regex | 将字符串按照regex拆分为字符串数组 |
package com.api; public class TestString {
public static void main(String[] args){
//构造方法
//无参构造
String str1 = new String();
//字符数组构造
char chars[] = {'a','b','c'};
String str2 = new String(chars);
//字节数组构造
byte bytes[] = {97,98,99};
String str3 = new String(bytes); System.out.println(str1);
System.out.println(str2);
System.out.println(str3); //字符串比较(区分大小写) 相同为true,否则为false
System.out.println(str2.equals(str3));
System.out.println(str1.equals(str3)); //字符串比较(不区分大小写) 相同为true,否则为false
String str4 = "ABC";
System.out.println(str2.equalsIgnoreCase(str4)); //获取长度
System.out.println(str2.length());
//字符串连接(指定字符串连接末尾)
System.out.println(str2.concat(str4));
//获取指定索引处的字符
System.out.println(str2.charAt(0));
//获取一个字符串在字符串对象中第一次出现的索引,没有则返回1
System.out.println(str2.indexOf("b"));
System.out.println(str2.indexOf("d"));
//从start索引开始截取字符串,end存在截取不会包含end
System.out.println(str2.substring(1));
System.out.println(str2.substring(1,2)); //转换字符数组
System.out.println(str2.toCharArray());
System.out.println(str2.getBytes());
//替换字符
System.out.println(str3.replace("a","R"));
//拆分数组
System.out.println(str3.split("b"));
} }
五、Math类
功能:包含用于执行基本数学运算的方法,如初等指数,对数,平方根和三角函数。
特点:调用简单,所有方法均为静态方法。(静态方法使用static修饰,无需创建类对象即可调用)
public class TestMath {
public static void main(String[] args){
//绝对值
double d1 = Math.abs(-1);
//向上取整
double d2 = Math.ceil(1.1);
//向下取整
double d3 = Math.floor(1.1);
//四舍五入
double d4 = Math.round(2.4);
}
}
六、Object类
概述:Object 类是Java语言中的根类,即所有类的父类。如果一个没有指定继承父类,都会默认继承 Object 类。
部分方法:
toString 方法:返回对象的字符串表示。
equals 方法:比较两个对象是否相同。
public class TestObject{
public static void main(String[] args){
String a = "abc";
System.out.println(a.toString());
String b = "abc";
System.out.println(a.equals(b));
}
}
七、时间日期类
1.Date 类
功能:表示特定的时间,精确到毫秒。
构造方法:无参构造自动获取系统当前时刻。指定参数long date 可以自定义毫秒时刻。
成员方法:public long getTime()把日期对象转换成对应的时间毫秒值。
import java.util.Date;
public class TestDate {
public static void main(String[] args){
System.out.println(new Date());
System.out.println(new Date(0L));
System.out.println(new Date().getTime());
}
}
2.DateFormat 类(抽象类)
功能:完成Date对象和String的相互转换。
构造方法:使用 public SimpleDateFormat(String pattern) 子类。指定一个格式来格式化或解析的标准。
成员方法:
- public String format(Date date) :将Date对象格式化为字符串对象。
- public Date parse(String source):将字符串解析为Date对象。
import java.text.ParseException;
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
public class TestDateFormat {
public static void main(String[] args) throws Exception {
//创建时间对象
Date d = new Date();
System.out.println(d);
//创建日期格式化对象
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(df);
//时间对象格式化为字符串
String str1 = df.format(d);
System.out.println(str1);
//字符串解析为Date对象
Date d2 = df.parse(str1);
System.out.println(d2); }
}
Date d2 = df.parse(str1);总是异常,为方法添加 throws Exception,忽略异常。
八、Calendar类
功能:日历类,该类将所有可能用到的时间信息封装为静态成员变量,方便获取各个时间属性。
Canlendar为抽象类,创建对象是并非直接创建而是通过静态方法创建,返回子类对象。
静态方法:public static Calendar getInstance() 使用默认时区和语言环境获得一个日历。
成员方法:
public int get(int field)
:返回给定日历字段的值。public void set(int field, int value)
:将给定的日历字段设置为给定值。public abstract void add(int field, int amount)
:根据日历的规则,为给定的日历字段添加或减去指定的时间量。public Date getTime()
:返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
import java.util.Calendar;
import java.util.Date;
public class TestCalendar {
public static void main(String[] args){
//创建Calendar对象
Calendar cal = Calendar.getInstance();
//get设置年月日
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH) + 1;
int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
//set修改年月日
cal.set(Calendar.YEAR,2020);
cal.set(Calendar.MONTH,1);
cal.set(Calendar.DAY_OF_MONTH,1);
//add 在原值基础上加减
cal.add(Calendar.DAY_OF_MONTH,1);//加1天
//getTime 获取对应的Date对象
Date date = cal.getTime(); }
}
九、System类
功能:提供了大量的静态方法,可以获取与系统相关的信息或系统级操作。
成员方法:
1、public static long currentTimeMillis():返回当前系统时间与1970年01月01日00:00点之间的毫秒差值。
public class TestSystem {
public static void main(String[] args) {
System.out.println(System.currentTimeMillis());
}
}
2、public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length):将数组中指定的数据拷贝到另一个数组中。
public class TestSystem {
public static void main(String[] args) {
int[] arr1 = new int[]{1,2,3,4,5};
int[] arr2 = new int[]{6,7,8,9,10};
//拷贝指定位置数据覆盖指定位置0-3
System.arraycopy( arr1, 0, arr2, 0, 3);
}
}
十、StringBuilder类
前面提到 String 对象的内容不可改变,字符串是常量,所以每次进行字符串拼接操作会生成一个新的对象。这样既耗时又浪费内存,为了解决这个问题,可以使用 StringBuilder 类。
功能:可变字符序列(数组),它是一个类似String的字符串缓冲区,通过调用方法可以改变序列内容和长度。
构造方法:
public StringBuilder()
:构造一个空的StringBuilder容器。public StringBuilder(String str)
:构造一个StringBuilder容器,并将字符串添加进去。
成员方法:
public StringBuilder append(...)
:添加任意类型数据的字符串形式,并返回当前对象自身。public String toString()
:将当前StringBuilder对象转换为String对象。
public class TestStringBuilder {
public static void main(String[] args){
//创建StringBuilder对象
StringBuilder builder = new StringBuilder();
//添加任意字符
builder.append("你是");
builder.append(true);
System.out.println(builder); //转换字符串
String str = builder.toString();
}
}
十一、包装类
1.什么是包装类?为什么要使用包装类?
将基本数据类型封装成对象(包装类),好处在于可以在对象中定义更多的功能方法操作该数据。
2.装箱与拆箱
装箱可以将基本类型转换Wie对应的包装类对象。拆箱将包装类对象转换为基本类型。
如果对一个 包装类 进行修改,系统会自动完成拆箱和装箱操作。
valueOf或构造方法都可以进行装箱操作。
public class TestPack {
public static void main(String[] args){
int a = 1;
//装箱
Integer b = Integer.valueOf(a);
//自动拆箱装箱
b += 1; }
}
3.类型转换方法(基本类型和字符串转换)
public static byte parseByte(String s)
:将字符串参数转换为对应的byte基本类型。public static short parseShort(String s)
:将字符串参数转换为对应的short基本类型。public static int parseInt(String s)
:将字符串参数转换为对应的int基本类型。public static long parseLong(String s)
:将字符串参数转换为对应的long基本类型。public static float parseFloat(String s)
:将字符串参数转换为对应的float基本类型。public static double parseDouble(String s)
:将字符串参数转换为对应的double基本类型。public static boolean parseBoolean(String s)
:将字符串参数转换为对应的boolean基本类型。
注意如果转换类型必须为基本类型
温馨提示
- 如果您对本文有疑问,请在评论部分留言,我会在最短时间回复。
- 如果本文帮助了您,也请评论关注,作为对我的一份鼓励。
- 如果您感觉我写的有问题,也请批评指正,我会尽量修改。
Java基础学习笔记(五) - 常用的API的更多相关文章
- java基础学习笔记五(抽象类)
java基础学习总结——抽象类 抽象类介绍
- Java基础学习笔记十三 常用API之正则表达式、Date、DateFormat、Calendar
正则表达式 正则表达式(英语:Regular Expression,在代码中常简写为regex).正则表达式是一个字符串,使用单个字符串来描述.用来定义匹配规则,匹配一系列符合某个句法规则的字符串.在 ...
- Java基础学习笔记五 Java基础语法之面向对象
面向对象 理解什么是面向过程.面向对象 面向过程与面向对象都是我们编程中,编写程序的一种思维方式.面向过程的程序设计方式,是遇到一件事时,思考“我该怎么做”,然后一步步实现的过程.例如:公司打扫卫生( ...
- Java基础学习笔记总结
Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...
- 尚学堂JAVA基础学习笔记
目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...
- C++基础 学习笔记五:重载之运算符重载
C++基础 学习笔记五:重载之运算符重载 什么是运算符重载 用同一个运算符完成不同的功能即同一个运算符可以有不同的功能的方法叫做运算符重载.运算符重载是静态多态性的体现. 运算符重载的规则 重载公式 ...
- Java基础学习笔记(一)
Java基础学习笔记(一) Hello World 基础代码学习 代码编写基础结构 class :类,一个类即一个java代码,形成一个class文件,写于每个代码的前端(注意无大写字母) XxxYy ...
- Java IO学习笔记五:BIO到NIO
作者:Grey 原文地址: Java IO学习笔记五:BIO到NIO 准备环境 准备一个CentOS7的Linux实例: 实例的IP: 192.168.205.138 我们这次实验的目的就是直观感受一 ...
- Java基础学习笔记二十八 管家婆综合项目
本项目为JAVA基础综合项目,主要包括: 熟练View层.Service层.Dao层之间的方法相互调用操作.熟练dbutils操作数据库表完成增删改查. 项目功能分析 查询账务 多条件组合查询账务 添 ...
随机推荐
- P3119 [USACO15JAN]草鉴定Grass Cownoisseur 分层图或者跑两次最长路
https://www.luogu.org/problemnew/show/P3119 题意 有一个有向图,允许最多走一次逆向的路,问从1再走回1,最多能经过几个点. 思路 (一)首先先缩点.自己在缩 ...
- 牛客国庆集训派对Day6 A Birthday 费用流
牛客国庆集训派对Day6 A Birthday:https://www.nowcoder.com/acm/contest/206/A 题意: 恬恬的生日临近了.宇扬给她准备了一个蛋糕. 正如往常一样, ...
- codeforces 633F The Chocolate Spree (树形dp)
题目链接:http://codeforces.com/problemset/problem/633/F 题解:看起来很像是树形dp其实就是单纯的树上递归,就是挺难想到的. 显然要求最优解肯定是取最大的 ...
- hdu 1301 Jungle Roads krusckal,最小生成树,并查集
The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid money was s ...
- 一文看尽Java-多线程概念
一.前言 主要讲解一下多线程中的一些概念,本文之后就开始针对JUC包的设计开始解读: 二.概念 线程安全 1.存在共享数据(临界资源):2.多个线程同时操作共享数据:只有同时出现这两种 ...
- 【Offer】[22] 【链表中倒数第k个结点】
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 输入一个链表,输出该链表中倒数第k个结点. 思路分析 采用双指针的方法,第一个指针首先向前移动k-1个位置,第二个指针指向头节点,然后将 ...
- Matlab2016b破解安装教程——超详细
一.MATLAB是什么 MATLAB :是美国MathWorks公司出品的商业数学软件,用于算法开发.数据可视化.数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simuli ...
- Qt之键盘事件监听-实时响应大小写Capslock按键
目录 一.开篇 二.效果展示 三.实现思路 1.重写QLlinEdit 2.全局应用程序事件 3.windows钩子 四.相关文章 原文链接:Qt之键盘事件监听-实时响应大小写Capslock按键 一 ...
- SpringBoot 2.0 + 阿里巴巴 Sentinel 动态限流实战
前言 在从0到1构建分布式秒杀系统和打造十万博文系统中,限流是不可缺少的一个环节,在系统能承受的范围内既能减少资源开销又能防御恶意攻击. 在前面的文章中,我们使用了开源工具包 Guava 提供的限流工 ...
- Volatile与synchronize的区别
仅靠Volatile不能保证线程的安全性(原子性) 1.Volatile轻量级的,只能修饰变量.synchronize重量级的,还可以修饰方法 2.Volatile只保证数据的可见性,不能用来同步,因 ...