1 ArrayList集合

01 创建

  1. import java.util.ArrayList;
  2. /*
  3. 泛型:装在集合中的元素,全都是统一的一种类型。
    泛型必须是引用类型,不能是基本数据类型
  4. */
  5.  
  6. public class ArrayDemo02 {
  7. public static void main(String[] args) {
  8. ArrayList<String> list01 = new ArrayList<>();//创建一个ArrayList集合,其元素全是String类型
  9. System.out.println(list01);//直接打印是值,不是地址
  10.  
  11. list01.add("张三丰");
  12. System.out.println(list01);
  13. list01.add("张翠山");
  14. System.out.println(list01);//
  15. //list01.add(100);//错误写法,创建的时候<>泛型已经说了是String类型,所以所有元素必须写String
  16. list01.add("100");
  17. System.out.println(list01);
  18. }
  19. }

02 常用方法和遍历

对于元素的操作,即——增、删、查。常用的方法有:
public boolean add(E e) :将指定的元素添加到此集合的尾部。
public E remove(int index) :移除此集合中指定位置上的元素。返回被删除的元素。
public E get(int index) :返回此集合中指定位置上的元素。返回获取的元素。
public int size() :返回此集合中的元素数。遍历集合时,可以控制索引范围,防止越界。

  1. import java.util.ArrayList;
  2.  
  3. public class ArrayListMethod {
  4. public static void main(String[] args) {
  5. //创建集合对象
  6. ArrayList<String> list = new ArrayList<>();
  7. System.out.println(list);
  8.  
  9. //增-添加元素
  10. list.add("张三丰");
  11. list.add("张翠山");
  12. list.add("张无忌");
  13.  
  14. //查-查找元素,读取元素
  15. System.out.println("get:"+list.get(0));
  16. System.out.println("get:"+list.get(1));
  17. System.out.println("get:"+list.get(2));
  18.  
  19. //删-删除元素
  20. System.out.println("remove:"+list.remove(1));
  21.  
  22. //遍历输出
  23. for (int i = 0; i < list.size(); i++) {
  24. System.out.println("遍历输出:"+list.get(i));
  25. }
  26. }
  27. }
    //

[]
get:张三丰
get:张翠山
get:张无忌
remove:张翠山
遍历输出:张三丰
遍历输出:张无忌

03 ArrayList集合如何使用基本数据类型

ArrayList对象不能存储基本类型,只能存储引用类型的数据。类似<int> 不能写,但是存储基本数据类型对应的
包装类型是可以的。所以,想要存储基本类型数据, <> 中的数据类型,必须转换后才能编写,转换写法如下:

基本类型  基本类型包装类
byte            Byte
short           Short
int               Integer
long             Long
float             Float
double         Double
char            Character
boolean       Boolean

  1. import java.util.ArrayList;
  2.  
  3. public class ArrayListBasic {
  4. public static void main(String[] args) {
  5. //创建集合
  6. ArrayList<Integer> intList = new ArrayList<>();//只举Integer和long的例子
        //错误写法:ArrayList<int> intList = new ArrayList<>();
  7. ArrayList<Long> longList = new ArrayList<>();
  8.  
  9. intList.add(100);
  10. intList.add(200);
  11. intList.add(300);
  12.  
  13. longList.add(400l);//需要加上L或者l,否则会报错
  14. longList.add(500L);
  15.  
  16. System.out.println(intList.get(0));
  17. System.out.println(intList.get(1));
  18. System.out.println(intList.get(2));
  19.  
  20. System.out.println(longList.get(0));
  21. System.out.println(longList.get(1));
  22. }
  23. }
    //

100
200
300
400
500

  1. /*
  2. 训练1 数值添加到集合:创建一个集合,存储1-36之间的6个随机数
  3. */
  4. import java.util.ArrayList;
  5. import java.util.Random;
  6.  
  7. public class ArrayListTest01 {
  8. public static void main(String[] args) {
  9.  
  10. ArrayList<Integer> intList = new ArrayList<>();
  11. Random r = new Random();
  12.  
  13. for (int i = 0; i <5 ; i++) {
  14. intList.add(r.nextInt(36)+1);
  15. }
  16.  
  17. System.out.println("打印全部:"+ intList);
  18.  
  19. System.out.println("遍历输出");
  20. for (int i = 0; i < intList.size(); i++) {
  21. System.out.println(intList.get(i));
  22. }
  23. }
  24. }
  25.  
  26. //

打印全部:[28, 1, 15, 18, 9]
遍历输出
28
1
15
18
9

  1. /*
  2. 训练2: 自定义一个学生类,添加到arraylist集合中,并且遍历打印相关信息
  3. */
  4. public class ArrayListTest02 {
  5. public static void main(String[] args) {
  6. Person p1 = new Person("张三丰",99);//创建自定义对象
  7. Person p2 = new Person("张无忌",18);
  8. ArrayList<Person> personArrayList = new ArrayList<>();//创建ArrayList集合对象
  9.  
  10. personArrayList.add(p1);//add方法:添加的元素和一个Person对象,即 ArrayList<Person>的<>中的自定义类型
  11. personArrayList.add(p2);
  12.  
  13. for (int i = 0; i < personArrayList.size(); i++) {
  14. System.out.println(personArrayList.get(i));;//会输出两个对象的地址demo01.Person@1b6d358 demo01.Person@4554617c
  15. System.out.println((personArrayList.get(i)).getAge());
  16. System.out.println((personArrayList.get(i)).getName());
  17. }
  18. }
  19. }
    //

demo01.Person@1b6d3586
99
张三丰
demo01.Person@4554617c
18
张无忌

2 String 类

01 概述

String 类代表字符串。Java 程序中的所有字符串字面值(双引号括起来的字符串,如 "abc" )都作为此类的实例实现。

  1. 字符串常量:

字符串是常量;它们的值在创建之后不能更改。

字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。例如:

  1. String str = "abc";

等效于:

  1. char data[] = {'a', 'b', 'c'};
  2. String str = new String(data);

字符串效果上等效于char[ ]字符数组:"abc" 等效于 char[] data={ 'a' , 'b' , 'c' } 。但是在底层原理中是byte[ ]字节数组。

02 创建字符串

API中的三种构造方法:

public String() :初始化新创建的 String对象,以使其表示空字符序列。
public String(char[] value) :通过当前参数中的字符数组来构造新的String。
public String(byte[] bytes) :通过使用平台的默认字符集解码当前参数中的字节数组来构造新的
String。

  1. // 无参构造
  2. String str = new String();
  3. // 通过字符数组构造
  4. char chars[] = {'a', 'b', 'c'};
  5. String str2 = new String(chars);
  6. // 通过字节数组构造
  7. byte bytes[] = { 97, 98, 99 };
  8. String str3 = new String(bytes);

一种直接创建方法:

  1. String s = ''abc'';//直接写上双引号,就是字符串对象。虽然没有食欲new,但是JVM就会创建对象了

03 字符串的常量池

双引号直接写上的字符串,就在字符串常量池中。

对象str1和str2(由JVM自动创建)会重复利用常量池中的字符串。

但是自己new出来的对象str3不在常量池中。

04 字符串当中的常用方法

041 判断功能的方法(equals)

// == 是进行地址值的比较,如果确实想要进行内容的比较,可以使用两个方法:

  1. public boolean equals (Object anObject) :将此字符串与指定对象进行比较。
  2. public boolean equalsIgnoreCase (String anotherString) :将此字符串与指定对象进行比较,忽略大小
  3. 写。
  1. public class StringEquals {
    public static void main(String[] args) {
    String str1 = "hello";
    String str2 = "hello";
    String str3 = "HELLO";
  2.  
  3. System.out.println(str1 == str2);//true,地址一样
    System.out.println(str1.equals(str2));//true,内容一样
    System.out.println(str1.equals(str3));//false,大小写不一样
    System.out.println(str1.equals("hello"));//true
  4.  
  5. System.out.println(str1.equalsIgnoreCase(str3));//true
    }
    }

042 与获取相关的方法

  1. public int length () :返回此字符串的长度。
  2. public String concat (String str) :将指定的字符串连接到该字符串的末尾。
  3. public char charAt (int index) :返回指定索引处的 char值。
  4. public int indexOf (String str) :返回指定子字符串第一次出现在该字符串内的索引。
  5. public String substring (int beginIndex) :返回一个子字符串,从beginIndex开始截取字符串到字符
  6. 串结尾。
  7. public String substring (int beginIndex, int endIndex) :返回一个子字符串,从beginIndex
  8. endIndex截取字符串。含beginIndex,不含endIndex
  1. public class StringGetter {
  2. public static void main(String[] args) {
  3. //创建字符串对象
  4. String s1 = "helloworld";
  5.  
  6. // int length():获取字符串的长度,其实也就是字符个数
  7. System.out.println(s1.length());//
  8. System.out.println("‐‐‐‐‐‐‐‐");
  9.  
  10. // String concat (String str):将指定的字符串连接到该字符串的末尾.字符串是常量,拼接后是创建了新的对象,不会改变原来的字符串
  11. String s2 = "helloworld";
  12. String s3 = s2.concat("**hello Earth");
  13. System.out.println(s3);// helloworld**hello Earth
  14. }
  15. }
  16. //其他的方法类似

043 转换功能的方法

  1. public char[] toCharArray () :将此字符串转换为新的字符数组。
  2. public byte[] getBytes () :使用平台的默认字符集将该 String编码转换为新的字节数组。
  3. public String replace (CharSequence target, CharSequence replacement) :将与target匹配的字符串使
  4. replacement字符串替换。
  1. public class StringReplace {
  2. public static void main(String[] args) {
  3. String s = "Hel";
  4.  
  5. char[] c = s.toCharArray();
  6. System.out.println("length:"+c.length);
  7. for (int i = 0; i < c.length; i++) {
  8. System.out.println(c[i]);
  9. }
  10.  
  11. byte[] by = s.getBytes();
  12. System.out.println("bytes:");
  13. for (int i = 0; i < by.length; i++) {
  14. System.out.println(by[i]);
  15. }
  16.  
  17. String s2 = "会不会玩儿啊,你大爷的";
  18. String s3 = s2.replace("大爷","**");
  19. System.out.println(s3);
  20. }
  21. }
  22. ///
  23. length:3
  24. H
  25. e
  26. l
  27. bytes:
  28. 72
  29. 101
  30. 108
  31. 会不会玩儿啊,你**的

044 分割功能的方法

  1. public String[] split(String regex) :将此字符串按照给定的regex(规则)拆分为字符串数组。返回值是字符串数组
  1. public class StringSplit {
  2. public static void main(String[] args) {
  3. //创建字符串对象
  4. String s = "aa,bb,cc";
  5. String[] strArray = s.split(","); // ["aa","bb","cc"]
  6. System.out.println(strArray.length);
  7. for(int x = 0; x < strArray.length; x++) {
  8. System.out.println(strArray[x]); // aa bb cc
  9. }
  10. }
  11. }

三、static关键字

01 概述

当 static 修饰成员变量时,该变量称为变量。该类的每个对象都共享同一个类变量的值。任何对象都可以更改
该类变量的值,但也可以在不创建该类的对象的情况下对类变量进行操作。

  1. 格式:
    static 数据类型 变量名;
    如:
    static int idStudent

02 static关键字用于类属性

  1. public class StaticField {
  2. public static void main(String[] args) {
  3. Student s1 = new Student("郭靖",20);
  4. s1.room = "101教室";
  5. System.out.println("name:"+s1.getName()
  6. +",age:"+s1.getAge()+",教室:"+s1.room
  7. +",id:"+s1.getId());
  8. Student s2 = new Student("黄蓉",18);
  9. System.out.println("name:"+s2.getName()
  10. +",age:"+s2.getAge()+",教室:"+s2.room
  11. +",id:"+s2.getId());
  12. }
  13. }
    //

name:郭靖,age:20,教室:101教室,id:1
name:黄蓉,age:18,教室:101教室,id:2

03static关键字修饰方法-静态方法

当static 修饰成员方法时,该方法称为类方法(习惯称为静态方法)

  1. 修饰符 static 返回值类型 方法名 (参数列表){
  2. // 执行语句
  3. }

静态方法和成员方法的区别:

  • 静态方法不属于对象,而是属于类的
  • 成员方法必须创建对象来调用;
  • 静态方法可以通过对象来调用,但是不推荐;推荐使用类名称来调用。

注意:

  • 静态方法可以直接访问类变量和静态方法。
  • 静态方法不能直接访问普通成员变量或成员方法。反之,成员方法可以直接访问类变量或静态方法。
  • 静态方法中,不能使用this关键字。(This 代表当前对象,但是静态方法不用创建对象来调用)
  • 原因:内存当中是现有静态内容,后有非静态内容。先有的内容不能访问到后来出现的内容。

04 static的内存图

static 修饰的内容:

  • 是随着类的加载而加载的,且只加载一次。
  • 存储于一块固定的内存区域(静态区),所以,可以直接被类名调用。
  • 它优先于对象存在,所以,可以被所有对象共享。

05 静态代码块

位置:类中方法外。
执行:随着类的加载而执行且执行一次,优先于main方法和构造方法的执行。

格式:

  1. public class ClassName{
  2. static {
  3. // 执行语句
  4. }
  5. }

作用:给类变量进行初始化赋值。

4 Arrays工具类

java.utils.Arrays包内:

常用的有以下几个方法:

  1. public static String to String(数组) //将数组变成字符串
  2.  
  3. public static void sort(数组)//按照默认升序对数组元素排序

附录:java数据类型

一、八种基本数据类型(内置数据类型):

1 四种整数类型(byte、short、int、long)

2 两种浮点数类型(float、double)

3 一种字符类型(char):

4 一种布尔类型(boolean)

什么是JAVA的字面值

https://www.cnblogs.com/Parker-YuPeng/p/8520572.html

创建一个Hero对象会用到new关键字,但是给一个基本类型变量赋值却不是用new.

因为基本类型是Java语言里的一种内置的特殊数据类型,并不是某个类的对象。

给基本类型的变量赋值的方式叫做 字面值,如下所例:

  1. float hp = 313f;
  2. int armor = 24;

整数字面值、浮点数字面值、字符和字符串字面值(字符的字面值放在单引号中,字符串的字面值放在双引号中)

二、引用数据类型

java基础(3)java常用API的更多相关文章

  1. Java之String类常用API

    目录 Java之String类常用API char chatAt(int index) int length() char[] toCharArray() String(char value[]) S ...

  2. JAVA基础语法:常用功能符以及循环结构和分支结构(转载)

    3.JAVA基础语法:常用功能符以及循环结构和分支结构 1.常用功能符 注释 ("文字"是被注释的部分) //文字 单行注释 /文字/ 多行注释 算术运算符 + - * / / 整 ...

  3. Java基础技术-Java其他主题【面试】

    Java基础技术-Java其他主题[面试] Java基础技术IO与队列 Java BIO.NIO.AIO Java 中 BIO.NIO.AIO 的区别是什么? 含义不同: BIO(Blocking I ...

  4. 黑马程序员:Java基础总结----java注解

    黑马程序员:Java基础总结 java注解   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! java注解 lang包中的基本注解 @SuppressWarnings ...

  5. Java基础:Java的四种引用

    在Java基础:java虚拟机(JVM)中,我们提到了Java的四种引用.包括:强引用,软引用,弱引用,虚引用.这篇博客将详细的讲解一下这四种引用. 1. 强引用 2. 软引用 3. 弱引用 4. 虚 ...

  6. java基础-学java util类库总结

    JAVA基础 Util包介绍 学Java基础的工具类库java.util包.在这个包中,Java提供了一些实用的方法和数据结构.本章介绍Java的实用工具类库java.util包.在这个包中,Java ...

  7. java基础(二)-----java的三大特性之继承

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

  8. Java基础-使用JAVA代码剖析MD5算法实现过程

    Java基础-使用JAVA代码剖析MD5算法实现过程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  9. Java基础——6种常用类讲解

    本文主要介绍几种Java中常用类的应用. 一.System类 从API当中我们可以看出,public final class System exends Object.System类包含一些有用的字段 ...

  10. Java学习笔记五 常用API对象一

    常用API:字符串操作:String类,StringBuffer类,StringBulider类 字符串是最重要的数据类型之一,处理字符串也是一种语言的基本工作. 1.String类: public ...

随机推荐

  1. jQuery 查找元素2

    jQuery 查找元素2 :first <ul> <li>list item 1</li> <li>list item 2</li> < ...

  2. Shell 实践、常用脚本

    (1)计算1-100的和. #!/bin/bash n= ` do n=$[$i+$n] done echo $n (2)输一个数字,然后计算出1到数字的和,要求如果输入数字小于1,则重新输入,知道输 ...

  3. Springboot 上传excel并解析文件内容

    最近在做一个物业的系统,需要通过excel上传业主的信息,解析并入库. 参考:https://www.cnblogs.com/jyyjava/p/8074322.html 话不多说,直接上核心代码 i ...

  4. webpack 几个基本打包扩展项的安装命令

    网速比较慢的童鞋,装包时请准备好花生瓜子 webpack 本身只能打包 JavaScript 模块,但是它可以通过拓展打包比如静态资源文件.less.sass.typescript 等,还可以通过 b ...

  5. vector、map 判断某元素是否存在、查找指定元素

    一.vector 1.判断某元素是否存在 vector<string> vStr; int nRet = std::count(vStr.begin(), vStr.end(), &quo ...

  6. Win32汇编学习(11):对话框(2)

    我们将进一步学习对话框,探讨如何把对话框当成输入设备.如果您看了前一篇文章,那就会发现这次的例子只有少量的改动,就是把我们的对话框窗口附属到主窗口上.另外,我们还要学习通用对话框的用法. 理论: 把对 ...

  7. python from entry to abandon3

    第十章的内容是解决问题————编写一个Python脚本.在我的电脑上因为Zip命令不能正常工作所以无法给出演示.该章给出了很有意义的编程思路,对以后学习和工作都有不错的参考意义,这部分有兴趣的同学还是 ...

  8. vue+vux scrollTop无法实现定位到具体dom

    先看一下最终的运行效果. 项目背景介绍:技术栈: vue+vux+nodejs需求:对汽车品牌列表可以按照字母进行索引定位 在开发中实现这种需求,心想还不是小菜一碟,作为一个饱经bug的程序员,别的我 ...

  9. CookieHelper

    using System.Web: /// <summary> /// CookieHelper /// </summary> public static class Cook ...

  10. 【Core】.NET Core 部署( Docker + CentOS)

    CentOS 下 Docker安装 使用脚本安装 Docker (1)安装docker  sudo yum install docker (2)启动docker systemctl  start do ...