Java_ArrayList数组、解决集合存入数字问题_包装类、字符串的特点以及方法、String当中与获取(转换)的方法、分割字符串的方法: Arrays工具类、 数学工具类Math_学习

ArrayList数组

  1. 数组的长度不可以发生改变。
  2. 但是ArrayList集合的长度是可以随意变化的。
  3. 对于Arraylist来说,有一个尖括号代表泛型。
  4. 泛型:也就是装在集合当中的所有元素,全都是统一的什么类型。注意:泛型只能是引用类型,不能是基本类型。
public static void main(String[]args){
///创建了一个ArrayList集合,集合的名称是list,里面装的全都是string字符串类型的数据
//右侧的尖括号内部可以不写内容,但是<>本身还是要写的。
ArrayList<String> list = new ArrayList<>();
System. out. println( list); // []
//向集合当中添加—些数据,需要用到add方法。
list.add("王八蛋");
System.out.println(list);

注意:

泛型只能是引用类型,不能是基本类型

ArrayList当中的常用方法有:

  1. public boolean add(E e):向集合当中添加元素,参数的类型和泛型一致。返回值代表添加成功
  2. public E get(int index):从集合当中获取元素,参数是索引编号,返回值就是对应位置的元素。
  3. public E remove(int index): 从集合当中删除元素,参数是索引编号,返回值就是被删除掉的元素。
  4. public int size(): 获取集合的尺寸长度,返回值是集合中包含的元素个数。
public static void main(String[]args) {
	ArrayList<String> list = new ArrayList<>();
	System.out.println(list); // []
	//向集合中添加元素:add
	boolean success = list.add(“柳岩");
	System.out.println(list); //[柳岩j
	System.out.println(“添加的动作是否成功:" + success); // true
	list.add("高圆圆");
	list.add("赵又廷");
	list.add("李小璐");
	list.add("贾乃亮");
	System.out.println(list); //[柳岩,高圆圆,赵又廷,李小璐,贾乃亮
	//从集合中获取元素: get。索引值从e开始
	String name = list.get(2);
	system.out.println("第2号索引位置:" + name);//赵又廷
	//从集合中删除元素: remove。索引值从e开始。
	String whoRemoved = list.remove( index: 3);
	system.out.println(“被删除的人是:" +whoRemoved);l/李小璐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(“迪丽热巴");
	list.add("古力娜扎");
	list.add("玛尔扎哈");
	//遍历集合
	for (int i = o; i < list.size(); i++) {
		System.out.println(list.get(i));
	}
}

解决集合存入数字问题_包装类

如果希望向集合ArrayList当中存储基本类型数据,必须使用基本类型对应的“包装类”。

基本类型包装类(引用类型,包装类都位于java.lang包下)
byteByte
shortShort
intInteger【特殊】
longLong
fLoatFLoat
doubleDouble
charCharacter【特殊】
booLeanBooLean

演示如下

public static void main(String[]args) {
	ArrayList<Integer> listc = new ArrayList<>();listC.add( 100);
	listC.add(200);
	System.out.println(listc); // [100,200]
	//这里实现了自动拆箱的功能
	int num = listC.get(1);
	System.out.print1n(“第1号元素是:" +num);
}

字符串

java .lang. String类代表字符串。
API当中说: Java程序中的所有字符串字面值(如“abc”)都作为此类的实例实现。
其实就是说:程序当中所有的双引号字符串,都是string类的对象。(就算没有new,也照样是。)
字符串的特点:

  1. 字符串的内容永不可变。【重点】
  2. 正是因为字符串不可改变,所以字符串是可以共享使用的。
  3. 字符串效果上相当于是char[ ]字符数组,但是底层原理是byte[ ]字节数组。

三种构造方法:
5. public String():创建一个空白字符串,不含有任何内容。
6. public String(char[ ] array):根据字符数组的内容,来创建对应的字符串。
7. public String(byte[ ] array):根据字节数组的内容,来创建对应的字符串。
—种直接创建:
String str = “HeLlo”; 右边直接用双引号

public static void main(String[]args) {
	//使用空参构造
	String str1 = new String();//小括号留空,说明字符串什么内容都没有。
	system.out.print1n("第1个字符串:" + str1);
	//根据字符数组创建字符串
	char[]charArray = i 'A','B', 'C'};
	String str2 = new string(charArray ) ;
	System.out.println(“第2个字符串:+ str2);
	//根据字节数组创建字符串
	byte[] byteArray = i 979899 };
	String str3 = new String(byteArray ) ;
	System.out.println("第3个字符串:" + str3);
	//直接创建
	String str4 = "He1lo" ;

	System.out.println(“第4个字符串:" + str4);
}

字符串常量池内存图分析

在这里插入图片描述
注意:
1.对于引用类型来说,==进行的是地址值的比较。
2.双引号直接写的字符串在常量池当中,new的不在池当中。

==是进行对象的地址值比较,如果确实需要字符串的内容比较
可以使用两个方法:

  1. public boolean equals(Object obj):参数可以是任何对象,只有参数是一个字符串并且内容相同的才会给true,否则返回false。备注:任何对象都能用object进行接收。
  2. public boolean equalsIgnoreCase(String str):忽略大小写,进行内容比较。|
String strA = "ava" ;
String strB = "java" ;
System.out.println(strA.equals(strB)); // false,严格区分大小写
System.out.println(strA.equalsIgnoreCase(strB)); // true,忽略大小写Ⅰ

注意事项:
1.任何对象都能用object进行接收。
2. equals方法具有对称性,也就是a.equals(b)和b.equals(a)效果一样。
3. 如果比较双方一个常量一个变量,推荐把常量字符串写在前面。
推荐:"abc ".equals(str)不推荐:str.equals( “abc”)【后面这个容易报空指针异常】

String str5 = null;
System.out.println("abe".equals(str5));//推荐:false
system.out.printLn(str5.equals( " abc"));//不推荐:报错,空指针异常NuLLPointerException

String当中与获取相关的常用方法有:

  1. public int length( ):获取字符串当中含有的字符个数,拿到字符串长度。
  2. public String concat(String str):将当前字符串和参数字符串拼接成为返回值新的字符串。
  3. public char charAt(int index):获取指定索引位置的单个字符。(索引从0开始。)
  4. public int index0f (String str):查找参数字符串在本字符串当中首次出现的索引位置,如果没有返回-1值。
public static void main(String[] args) {
	//获取字符串的长度
	int length = "asdasfeutrvauevbueyvb" .length( );
	System.out.println("字符串的长度是:" + length);//拼接字符串
	String str1 = "He1lo";
	String str2 ="wor1d" ;
	String str3 = str1.concat(str2);
	System.out.println(str3); // Helloworld,新的字符串
	System.out.print1n( "========");
	//获取指定索引位置的单个字符
	char ch = "He11o".charAt(1);
	System.out.println("在1号索引位置的字符是:" + ch);
	System.out.println("=========");
	//获取指定索引位置的单个字符
	char ch = "He11o".charAt(1);
	System.out.println(“在1号索引位置的字符是:" +ch);
	System.out.println( "=========");
	//查找参数字符串在本来字符串当中出现的第一次索引位置i
	//如果根本没有,返回-1值
	String original = "He1lowor1dHe1lowor1d" ;
	int index = original.indexOf("11o");
	System.out.print1n(“第一次索引值是:+ index); // 2
	System.out.println("He1lowor1d".indexOf( "abc")); // -1
}

String当中与转换相关的常用方法有:

  1. public char[ ] toCharArray():将当前字符串拆分成为字符数组作为返回值。
  2. public byte[] getBytes()。获得当前字符串底层的字节数组。
  3. public String replace(CharSequence oldString,CharSequence
    newString):将所有出现的老字符串替换成为新的字符串,返回替换之后的结果新字符串。
public static void main(String[]args) {
	//转换成为字符数组
	char[] chars = "He11o".toCharArray();
	System.out.println( chars[o]);// H
	System.out.println(chars. length); // 5
	System.out.println("==============");
	//转换成为字节数组
	byte[] bytes = "abc".getBytes();
	for (int i = 0; i < bytes.length; i++) {
		System.out.println(bytes[i]);
	}
	System.out- println( "==============");
	//字符串的内容替换
	String str1 = "How do you do?" ;
	String str2 = str1.replace( target: "o",replacement:*");
	system.out.println(str1); // How do you do?
	System.out.println(str2); // H*w d* y*u d*?				
	System.out.println("==============" );
	String lang1 = "会不会玩儿呀!你大爷的!你大爷的!你大爷的!! ! ";
	String lang2 = lang1.replace( target: “你大爷的",replacement:“****");
	System.out.println(lang2);//会不会玩儿呀!****!****!****! ! !
}

分割字符串的方法:

  1. public String[ ] split(String regex):按照参数的规则,将字符串切分成为若干部分。
public static void main(String[]args) {
	String str1 = "aaa,bbb,ccc";
	String[]array1 = str1.split( regex: ",");
	for (int i = 0; i < array1. length; i++) {
		System.out.println(array1[i]);
		}
}

静态内存图:
在这里插入图片描述
注意:
根据类名称访问静态成员变量的时候,全程和对象就没关系,只和类有关系。

静态代码块的格式是:

public class类名称{
	static {
	//静态代码块的内容
	}
}

特点:

  1. 当第一次用到本类时,静态代码块执行唯一的一次。
  2. 静态内容总是优先于非静态,所以静态代码块比构造方法先执行。
  3. 静态代码块的典型用途:用来—次性地对静态成员变量进行赋值。

Arrays工具类

Arrays是一个与数组相关的工具类,里面提供了大量静态方法

用来实现数组常见的操作:

  1. public static String
    toString(数组):将参数数组变成字符串(按照默认格式:[元素1,元素2,元素3…])
  2. public static void sort(数组):按照默认升序(从小到大)对数组的元素进行排序。
public static void main(String[]args) {
	int[]intArray = {1020, 30};
	//将int[]数组按照默认格式变成字符串
	String intStr = Arrays.toString(intArray );
	System.out.println(intStr); / / [1020,30]
	int[]array1 = i2,13106};
	Arrays.sort( array1);
	System.out.println(Arrays.toString(array1));// [1,2,3,6,10]
	String[array2 = { "bbb", "aaa", "ccc"};
	Arrays.sort(array2);
	System.out.printin(Arrays.toString(array2)); // [aaa,bbb,ccc]
}

注意事项:

  1. 如果是数值,sort默认按照升序从小到大
  2. 如果是字符串,sort默认按照字母升序
  3. 如果是自定义的类型,那么这个自定义的类需要有Comparable或者Comparator接口的支持。

*题目:
请使用Arrays相关的API,将一个随机字符串中的所有字符升序排列,并倒序打印。

public static void main(String[] args) {
	String str = "asv76agfqwdfvasdfvjh";
	//如何进行升序排列:sort
	//必须是一个数组,才能用Arrays.sort方法
	// String -->数组,用toCharArray
	char[]chars = str.toCharArray();
	Arrays.sort( chars); //对字符数组进行升序排列
	//需要倒序遍历
	for (int i = chars. length - 1; i >= 0; i--) {
	System.out.println(chars[i]);

	}
}

数学工具类Math

java.util.Math类是数学相关的工具类,里面提供了大量的静态方法,
完成与数学运算相关的操作:

  1. public static double abs( double num):获取绝对值。有多种重载。
  2. public static double ceil (double num):向上取整。
  3. pblic static double floor( double num):向下取整。
  4. public static long round(double num):四舍五入。
  5. Math.PI代表近似的圆周率常量。
public static void main(String[ ] args) {
	//获取绝对值
	System.out.println(Math.abs(3.14));//3.14
	System.out.println(Math.abs(0));//0
	System.out.println(Math.abs(-2.5)); // 2.5
	System.out.println( "================");
	//向上取整
	System.out.println(Math.ceil(3.9)); // 4.0
	System.out.println(Math.ceil(3.1)); // 4.0
	System.out.println(Math.ceil(3.0)); // 3.0
	//四舍五入
	System.out.println( "================");
	System.out.println(Math.round( 20.4));// 20
	System.out.println(Math.round( 10.5)); // 11

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值