API[Application Programming Interface],. 应用编程接口。Java API是一本程序员的字典,是JDK中提供给我们使用的类的说明文档。这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习如何使用这些功能就可以类。所以我们可以通过查询API的方式,来学习Java提供的类,并得知怎么使用他们。
一个可以解析基本类型和字符串的简单文本扫描器
例如:以下代码使用户能够从 System.in 中读取一个数;
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
import 包路径.类名称;
类名称 对象名 = new 类名称(有可能有参数);
对象名.成员方法名(可能有参数);
代码如下
package method.demo2;
import java.util.Scanner;//1.导包
public class Demo02PhoneParam {
public static void main(String[] args) {
//2、创建
Scanner sc = new Scanner(System.in);
String qwq = sc.next();//3,使用
System.out.println(qwq);
}
//注意,我们用System.in输入的都是字符串
}
练习:(输入三个数字,并判断三个数字谁最大)(我的想法)
package method.demo2;
import java.lang.reflect.Array;
import java.util.Scanner;//1.导包
public class Demo02PhoneParam {
public static void main(String[] args) {
int []aa = new int[3];
int qwq = 0;
for(int i =0 ; i<3;i++){
System.out.println("请输入第" + (i+1) + "个数字");
Scanner sc = new Scanner(System.in);
qwq = sc.nextInt();
aa[i] = qwq;
}
int max = 0;
max = aa[0];
for(int i = 0 ;i<aa.length -1;i++){
if(max< aa[i+1]){
max = aa[i+1];
}
}
System.out.println("最大值是:"+ max);
}
//将输入的数字放入一个数组中,然后再比较
}
匿名对象的格式: new 类名称();
主要运用:
作用:用来生成随机数字
示例代码:
package method.demo2;
import java.lang.reflect.Array;
import java.util.Random;//1.导包
public class Demo02PhoneParam {
public static void main(String[] args) {
Random ran = new Random();
int a = ran.nextInt(100);
System.out.println(a);
}
}
语法: 类名 []名称 = new 类名[数字];
例子:
package method.demo2;
import java.lang.reflect.Array;
import java.util.Random;//1.导包
public class Demo02PhoneParam {
public static class Person{
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public static void main(String[] args) {
Person []group = new Person[3];
Person one = new Person("迪丽热巴",18);
Person two = new Person("古力娜扎",28);
Person three = new Person("马儿扎哈", 38);
group[0] = one;
group[1] = two;
group[2] = three;
for(int i = 0;i<group.length;i++){
System.out.println(group[i].getName());
System.out.println(group[i].getAge());
}
}
}
java.util.ArrayList 是大小可变的数组的实现,存储在内的数据成为元素.此类提供一些方法来操作内部的元素.ArrayList中可以不断的添加元素**,其大小也自动增长.**
对于ArrayList来说,有一个尖括号代表泛型
注意:从JDK 1.7+开始,右边的尖括号内部可以不写内容,但是<符号要写>
代码如下:
package method.demo2;
import java.util.ArrayList;
public class Demo02PhoneParam {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
System.out.println(list);//直接打印这个类,得到的是内容,不是地址值,如果内容是空,那就输出 []
//如果要添加数据,要用到add方法
list.add("赵丽颖");
System.out.println(list);
list.add("你的野爹");
System.out.println(list);
//可以发现,add方法是将新内容加到最后一位
}
}
将指定的元素添加到此列表的尾部。
2.E get(int index)方法
从集合当中获取元素,参数是数组的索引值
3 E remove(int index)方法
移除此列表中指定位置上的元素。
4 int size()
返回此列表中的元素数。
等等,我们可以再API文档里面添加与查阅
我们都知道,ArrayList里面只能够储存泛型,那么我们怎么将基本数据类型储存在里面吗?
基本类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
可以把他们的封装类当成是基本数据类型来使用,即语法基本一致,当然,这是从JDK1.5开始才支持的
注意:从Jdk1.5+开始,支持自动装箱、自动拆箱
生成6个1~33之间的随机整数,添加到集合,并遍历输出
package method.demo2;
import java.util.ArrayList;//导入
import java.util.Random;
public class Demo02PhoneParam {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
Random ran = new Random();
int temp =0;
for (int i =0;i<6;i++){
temp = ran.nextInt(33) + 1;
list.add(temp);
}
System.out.println(list);
}
}
定义以指定格式打印集合的方法(ArrayList作为参数),用{}扩起集合,使用@符号来分割每一个元素
package method.demo2;
import java.util.ArrayList;//导入
import java.util.Random;
public class Demo02PhoneParam {
public static void print(ArrayList<String> list){
System.out.print("{");
for (int i =0;i<list.size();i++){
String name = list.get(i);
if(i!=list.size() -1){
System.out.print(name + "@");
}
else{
System.out.print(name);
}
}
System.out.print("}");
}
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("妈妈");
list.add("爸爸");
list.add("爷爷");
list.add("奶奶");
print(list);
}
}
程序中的所有的双引号的自负床,都是String的对象(就算没有new 也是这样)
例如:
String str = "abc";
等效于:
char data[] = { 'a', 'b', 'c'}; String str = new String(data);//字符数组来创建字符串类
字符串是常量,因此内容在创建之后永不能更改
正是因为字符串不能改变,所以字符串是可以共享使用的
字符串相当于字符型数组,但是底层原理是byte[]字节数组.
常见的创建的3 +1种方式:
三种构造方法:
一种直接创建:
程序当中直接写在双引号里面的字符串,就在字符串的常量池中(这个常量池在堆当中)
等号的含义
一 public boolean equals(Object obj);//参数可以是任何类型,但是只有是字符串并且内容才会给true,其余给false
注意
如果是一个常量和一个变量作为比较,最好常量卸载前面,原因是如果str是null,那么将出现空指针异常
推荐: "abc".equals(str);
二 public boolean equalsIgnoreCase(String str);//忽略大小写,进行比较
也就是说
"abc".equalsIsIgnoreCase("ABC");//返回是true
一 public int length();//获取字符串当中含有的字符的个数
二 public String concat(String str)//将当前的字符串和参数字符串拼接成为返回值
三 public int indexOf(String str)//查找参数字符串在本字符串当中首次出现的索引值,如果没有,则返回-1
String |
[substring] (int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串。 |
---|---|
String |
[substring] (int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串。 |
一 public char[] toCharArray(); //将当前字符串拆分为字符数组并返回
二 public byte getBytes()//获得当前字符串底层的字符数组
三 public String replace(CharSequence oldString,CharSequence newString)//将所有出现的老字符串替换成为新的字符串,返回替换之后的结果新字符串
注意,原来的字符串没有发生改变
CharSequence是一个接口
一 public String[] split(String regex)//按照参数的规则,参数就是切的地方,将字符串切分成若干部分
代码如下
类文件
package your_father;
public class Student {
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
private int id;
static String room;
private static int idCounter = 0;
public Student(String name, int age) {
this.name = name;
this.age = age;
idCounter++;
this.id = idCounter;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
main
package your_father;
public class demo {
public static void main(String[] args) {
Student one = new Student("爸爸", 40);
one.room = "天堂";//这里的修改直接会让多个对象的这个值都发生改变
Student two = new Student("儿子", 18);
System.out.println("姓名:" + one.getName() + " 班级是 " + one.room + one.getId());
System.out.println("姓名:" + two.getName() + " 班级是 " + two.room + two.getId());
}
}
一旦使用static修饰成员方法,那么这就成为了静态方法
静态方法是不属于对象,是属于类的
如果没有static关键字,那么必须首先创建对象,然后通过对象才能使用它
对于静态方法来说,可以直接调用他(可以用对象名调用,也可以用类名调用)
obj.xxx();//不推荐,我们容易误以为这是一个方法,同时,在编译的时候,会转化为下面的写法
ClassName.xxx();//推荐,别人一看就知道这是静态方法
当然,成员变量也可以直接 类名.静态成员变量
注意:
格式:
public class 类名称{
static{
静态代码块的内容
}
}
主要用途:
常用方法
一 public static String toString(数组)/将参数的数组变成字符串(按照默认输出格式:[元素1,元素2…])
二 public static void sort(数组)//按照升序对数组的元素进行排序
常用方法
一 public static double abs(double num)//获取绝对值
二 public static double ceil(double num)//向上取整
三 “public static double floor(double num)”//向下取整
四 public static long round(double num)//四舍五入
练习:计算在-10.8到5.9之间,绝对值大于6或者小于2.1的整数有多少个?
package your_father;
public class demo {
public static void main(String[] args) {
double left = Math.ceil(-10.8);
double right = Math.floor(5.9) ;
int num = 0;
for(int i = 0;i<=Math.abs(left);i++){
if(i>6 || i<2.1){
num++;
}
}
for(int j =1; j<= Math.abs(right);j++){
if(j>6 || j<2.1){
num++;
}
}
System.out.println(num);
}
}
ble abs(double num)**//获取绝对值
二 public static double ceil(double num)//向上取整
三 “public static double floor(double num)”//向下取整
四 public static long round(double num)//四舍五入
练习:计算在-10.8到5.9之间,绝对值大于6或者小于2.1的整数有多少个?
package your_father;
public class demo {
public static void main(String[] args) {
double left = Math.ceil(-10.8);
double right = Math.floor(5.9) ;
int num = 0;
for(int i = 0;i<=Math.abs(left);i++){
if(i>6 || i<2.1){
num++;
}
}
for(int j =1; j<= Math.abs(right);j++){
if(j>6 || j<2.1){
num++;
}
}
System.out.println(num);
}
}