java学习笔记(七)常用API第一部分

个人笔记,仅供参考

API

API即jdk中提供,可以直接使用的类。

使用方法:

  1. 打开帮助文档
  2. 学习对应的使用方法
  3. 看包,java.lang下的不需要导包
  4. 看类的解释和说明
  5. 学习构造方法
  6. 使用成员方法

1、Scanner类

该类作用是获取键盘输入

使用:

  1. 导包(IDEA会自动导入)import 包路径.类名称
  2. 创建
  3. 使用
public static void main(String[] args) {
        //创建scanner类
        //System.in代表从键盘获取输入
        Scanner scanner = new Scanner(System.in);
        //获取键盘输入的int数字
        int a = scanner.nextInt();
        //获取键盘输入的字符串
        String str = scanner.next();
        //注意上面的语句只能获取不带空格的字符串,如有空格,要用下方的代码
        String str2 = scanner.nextLine();
    }

2、匿名对象

有些情况下,创建对象时可以不写对象名字,这样的对象叫匿名对象

public class Person {//下文举例使用
    String name;
    public void showname(){
        System.out.println(name);
    }
}
/**
         * 匿名对象就是只有右边的对象,
         * 没有左边的名字和赋值运算符
         */
        new Person().name = "bob";
        new Person().showname();
        /**
         * 匿名对象只能用一次
         * 下次要重新创建
         * 在某个对象只要用一次是可以使用匿名对象
         */

第六行调用的方法输出为null值,即第六行重新创建了对象

匿名对象也可以作为方法的参数和返回值

3、Random类

用于生成随机数

使用步骤大致同Scanner类。

import java.util.Random;
public class Random_demo {
    public static void main(String[] args) {
        Random r = new Random();
        int num = r.nextInt();
        System.out.println(num);
    }
}

生成的随机数是int范围内随机一个值

指定生成范围:

 int num1 = r.nextInt(3);
        //上面这行生成随机数的范围是[0,3),即有0,1,2三种可能

另一种指定生成范围的方式

//根据int变量n的值,来获取随机数字,范围[1,n],两个都能取到
        int n = 5;
        int num2 = r.nextInt(n) + 1; //本来是[0,n),整体加一就变成了[1,n+1)
        System.out.println(num2);

4、ArrayList集合

对象数组

把对象的地址值存在数组里,可以通过数组来调用对象

 public static void main(String[] args) {
        //先创建一个长度为3的数组,里面用来放Person类型的数组
        Person[] array = new Person[3];
        Person one = new Person("wang",18);
        Person two = new Person("li",28);
        Person three = new Person("gu",31);
        array[0] = one;//将one当中的地址值存到array里
        array[1] = two;
        array[2] = three;

        System.out.println(array[0]);//打印出来为一个地址值
        System.out.println(array[1].getName());
    }

这种方法有一个弊端,即数组的长度在程序运行期间不可更改,即一开始需要考虑好数组的长度。

为了解决这个问题,应该把数组换成集合。

数组和集合的最大区别就是长度可不可变

ArrayList集合

import java.util.ArrayList;
//对于ArratList来说,有一个尖括号<E>表示泛型,也就是在集合中的所有元素全部是什么类型
        //泛型只能是引用类型,不能是基本类型
        ArrayList<String> list = new ArrayList<>();
        System.out.println(list);
        //对于ArrayList集合来说,直接打印得到的是内容,而不是地址

使用add方法添加元素

list.add("wang");

注意集合的泛型,只能写泛型指定的数据类型

ArrayList常用方法

1、添加,

public boolean add(E e);
public E get(int index);
public E remove(int index);
public int size();

第一行向集合中添加元素,参数的类型和泛型一致

第二行从集合当中获取元素,参数是索引编号,返回值是对应位置的元素

第三行从集合中删除元素,参数是索引编号,返回值是被删除的元素

第四行获取集合的尺寸长度,返回值是集合中包含的元素个数

public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        System.out.println(list);
        //添加元素,对于ArrayList集合来说,议案家必定成功,但对其他集合就不一定,所以需要返回值
        boolean success = list.add("A");
        System.out.println(list);
        System.out.println("添加的动作是否成功" + success);

        //从集合中获取,索引从0开始
        String a = list.get(0);
        System.out.println(a);

        //从集合中删除元素
        list.remove(0);
        System.out.println(list);

        //得到集合长度
        int size = list.size();
        System.out.println(size);
    }

遍历集合

public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("A");
        list.add("B");
        list.add("C");
        
        //遍历集合
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }

集合存基本类型

要在集合中使用基本类型,要使用对应的包装类

         /**基本类型   包装类(引用类型,位于java.lang包)
         * byte       Byte
         * short      Short
         * int        Integer
         * long       Long
         * float      Float
         * double     Double
         * char       Character
         * boolean    Boolean
         */

使用示范

ArrayList<Integer> list = new ArrayList<>();
list.add(100);
list.add(200);
int a = list.get(1);
System.out.println(a);

5、String类

字符串创建后不可改变(常量)

因为字符串内容不可改变,多以字符串可以共享使用

字符串效果上相当于char类型的数组

创建字符串常见的3+1种方法

1、public String() 创建一个空白字符串,不含内容

2、public String (char[] array);根据字符串数组的内容,来创建对应的字符串

3、public String(byte[] array);根据字节数组的内容,来创建对应的字符串

4、直接创建

字符串的常量池

程序中直接写上的双引号字符串,就在池中

对于基本类型== 是进行数值的比较,对于引用对象,时进行地址值的比较

常用方法

内容比较:

public boolean equals(Object obj);
//参数可以是任何对象,大小写敏感

只有参数是字符串,并且内容相同才为true

str1.equals(str2)
"abc".equals(str)
str.equals("abc")//不推荐,str为null时会报错

另一种比较方法

public boolean equalsIgnoreCase(String str)
//忽略大小写

获取相关方法

public int length();//长度
public String concat(String str);//将当前字符串和参数拼接,并返回
public char charAt(int index);//获取指定索引位置的单个字符
public int indexOf(String str);//查找参数字符串在本字符串中首次出现的索引值,如果没有,返回-1

截取相关方法

public String substring(int indes);
//从参数位置到末尾,返回型字符串
public String substring(int begin,int end);
//截取一个范围,左闭右开区间(结尾取不到)

转换相关方法

public char[] toCharArray()
//将字符串转换成字符数组
public byte[] getBytes();
//获得当前字符串底层的字节数据
public String replace(CharSequence oldString,Charsequence newString);
//将所有出现的老字符串替换为新字符串,返回替换的结果

分隔相关方法

public String[] split(String regex);
//按照参数的规则,将字符串切分为若干部分
//参数其实是正则表达式,如果用英文句点,必须用双引号和反斜杠"\\. "

使用:

String str1 = "aaa,bbb,ccc";
String[] array1 = str1.split(",")
//每个逗号切分一下

6、static关键字

用了static关键字,那么这样的内容就不再属于对象,而是属于类,也就是说该类的所有对象中的该内容都是一样的,且在对象中不可更改

对于成员变量

​ 如过一个成员变量使用了static关键字,那么这个成员变量不再属于对象自己,而是属于所在的类。

public class Student {
    private String name;
    private int age;
    static String room;
    }

Student one = new Student("alan",19);
Student two = new Student("bob",16);
one.room = "101教室";
//两个对象打印都为101教室

可以用作计数器,在默认的构造方法里让每次创建对象计数器都加1,实现生成序号

对于成员方法

public class Myclass {
    public void method(){
        System.out.println("这是一个普通的成员方法");
    }
    public static void methodStatic(){
        System.out.println("这是一个静态方法");
    }
}

如果是成员方法,必须创建对象才能用,而静态方法可以通过类名调用

public static void main(String[] args) {
        Myclass obj = new Myclass();
        obj.method();
        //对于静态方法,可以通过对象调用,也可以通过类名调用
        obj.methodStatic();//不推荐
        Myclass.methodStatic();//推荐
    }

注意

​ 静态只能直接访问静态,不能直接访问非静态

​ 静态方法不能用this

静态代码块

用大括号括起来的就是代码块,作用:当第一次用到本类,静态代码块执行唯一一次

public class Person{
    ststic{
        System.out.println("静态代码块执行");
    }
}

用途:用来一次性的对静态成员变量赋值

7、数组工具类Arrays

public static String toString(数组)//将参数数组变成字符串
public static void sort(数组)//升序排列,字符串按字母升序,如果是自定义的类,需要有comparable或comparator接口的支持

8、Math类

有大量的静态方法,完成与数学相关的操作

public static double obs(double num);//过去绝对值
public static double ceil(double num);//向上取整
public static double floor(double num);//向下取整
public static Long round(double num);//四舍五入

Math.PI为近似圆周率

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,667评论 5 472
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,361评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,700评论 0 333
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,027评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,988评论 5 361
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,230评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,705评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,366评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,496评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,405评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,453评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,126评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,725评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,803评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,015评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,514评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,111评论 2 341

推荐阅读更多精彩内容

  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 1,038评论 0 4
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,051评论 0 3
  • java笔记第一天 == 和 equals ==比较的比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...
    jmychou阅读 1,480评论 0 3
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,727评论 2 9
  • 四、集合框架 1:String类:字符串(重点) (1)多个字符组成的一个序列,叫字符串。生活中很多数据的描述都采...
    佘大将军阅读 730评论 0 2