Random、ArrayList、字符串和静态关键字static

Random类用于生成随机数字;导包创建使用
Random r=new Random();
int num=r.nextInt();(找一个int范围内的随机数,正负皆可)
int num=r.nextInt(3);(参数代表范围,左闭右开,与python相同)
[0,3) 0,1,2
快捷键100.fori点回车直接创建一个循环
r.nextInt(10)循环100次1-9里的随机数

对象数组:数组的元素是对象
(Person是一个类) Person[] array=new Person[3];定义一个有三个对象的数组。

ArrayList类:ArrayList集合的长度可以随意变化
对于ArrayList来说,有一个尖括号代表泛型。
泛型就是装在集合中的所有元素,类型统一;泛型只能是引用类型,不能是基本类型。
ArrayList< String> list=new ArrayList<>();
对于ArrayList来说,直接打印得到的不是地址值而是内容,如果内容为空,得到的是空的中括号:[]
向集合中添加数据需要用到add方法
list.add("…") sout(list)
list.add(100)错误写法,创建时就是字符串。

ArrayList当中的常用方法:
public boolean add(E,e):向集合中添加元素,参数类型和泛型一致,返回值代表添加是否成功。

public E get(int index):从集合中获取元素,参数是索引编号,返回值是对应位置的元素
String name = list.get(2)

public E remove(int index):删除元素,参数是索引编号,返回被删除的值
list.remove(3)

public int size():获得集合的长度,返回值是集合中的元素个数
size=list.size();

如果向集合ArrayList当中存储基本类型,要使用基本类型对应的包装类
如ArrayList< Integer> listC=new ArrayList<>(); int类型
listC.add(10) int num=listC.get(1)
遍历集合快捷键 集合名称list.fori回车
System.out.print()不换行打印输出

字符串:java.lang.String类代表字符串
java中API文档描述:java程序中所有字符串字面值都作为此类的实例实现。即:程序中的所有双引号字符串都是String类的对象(没有new也照样是)
字符串的内容不可变,所以字符串可以共享使用,字符串的效果相当于char[]字符数组,底层原理是byte[]字节数组

创建字符串方式:
三种构造方法(1) public String():创建一个空白字符串不含任何内容
(2) public String(char[] array):根据字符数组内容创建对应字符串
(3) public String(byte[] array): 根据字节数组内容创建对应字符串
也可以直接创建 String str=“hello”(最常用)

java中单引号的数据是char类型,如char[] arr={‘a’,‘b’}; 为char类型。
双引号的数据是String类型,如String[] arr = {“a”,“b”,“c”}; 为string类型

字符串常量池:程序中直接写上的双引号字符串,就在字符串常量池当中。如图1,其中str1和str2是重复利用一个常量池中的字符串
图1:
在这里插入图片描述

对于基本类型来说==是进行数值比较; 但对于引用类型来说, ==是进行地址值的比较
如果想对字符串内容比较,可使用方法:
public boolean equals(Object obj):参数可以是任何对象(任何对象都能用Object进行接收)只有参数是一个字符串并且内容相同才会给true
如:str1.equals(str2);“abc”.equals(str5);

public boolean equalsIgnoreCase(String str):忽略大小写比较内容

字符串获取:
public int Length();获取字符串当中含有的字符个数,字符串长度
public String contact(String str);将当前字符串和参数字符串拼接成为新的字符串
public char charAt(int index);获取指定索引位置的单个字符(索引从0开始)
“hello”.charAt(1);
public int indexOf(String str);查找参数字符串在本字符串中首次出现的索引位置,没有则返回-1

字符串的截取方法(python中的切片):
substring(int index);截取从参数位置一直到字符串末尾返回新字符串
substring(int begin,int end):截取从begin开始到end结束的字符串(前闭后开)
String str1=“hello”
String str1=“java”
str1中保存str1中的地址值,原本地址值是hello字符的地址,后来地址变成了java的地址值

字符串的转换:
public char[] toCharArray() 将当前字符串拆分为字符数组作为返回值
public byte[] getBytes() 获得当前字符串底层的字节数组
public String replace(CharSequence oldstring,CharSequence newstring) 将所有出现的老字符串替换成为新的字符串,返回替换后的结果新字符串。
CharSequence意思是可以接收字符串类型

字符串分割:
public String[] split(String regex) 按照参数切分字符串
split方法的参数是一个正则表达式,如果按照英文”.“切分,必须写\.
还有,在Java中,不管是String.split(),还是正则表达式,有一些特殊字符需要转义。
这些字符是
( [ { / ^ - $ ¦ } ] ) ? * + .
转义方法为字符前面加上"\",这样在split、replaceAll时就不会报错了;
不过要注意,String.contains()方法不需要转义

静态关键字static
一旦使用static关键字修饰成员,那么这样的内容不仅仅属于对象自己,而是属于类,凡是本类的对象都共享一份;
对于静态方法,可以通过对象名调用,也可以直接通过类名称调用。
obj.methodstatic(); 这种写法编译后也会被javac翻译为类名称.静态方法名。
myclass.methodstatic();最好使用这种
无论是成员变量还是成员方法。如果有static都推荐用类名称进行调用
对于本类当中的静态方法可以省略类名称
methodstatic();

静态不能直接访问非静态,不能直接访问非静态。因为内存当中先有静态内容后有非静态内容
静态方法中不能使用this。this代表当前对象,通过谁调用的方法谁就是当前对象(只用类名称调用静态)

静态内存:
图2中方法区中有专门的静态区,静态变量直接在方法区中寻找,即:以类名称访问静态变量时,全程和对象无关,只和类有关。
图2

静态代码块
特点:当第一次用到本类时,静态代码块执行唯一的一次
public class 类名称{
static{
//静态代码块的内容
}
}
静态内容总是优先于非静态,所以静态代码块比构造方法先执行
静态代码块典型用途:用于一次性地对静态成员变量进行赋值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值