欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java基础语法学习(匿名对象、static关键字、常用工具类api)

程序员文章站 2022-04-15 18:56:47
文章目录匿名对象static关键字常用工具类apiScanner类Random类ArrayList类(集合)String类Arrays类Math类匿名对象创建对象的标准格式:类名 对象名 = new 类名称();匿名对象就是只有右边的对象,没有左边的名字和赋值运算符。例子:new 类名称();注意事项:匿名对象只能使用唯一一次,下次再创建对象已经不是原来的对象了。匿名对象的具体内容存放在堆内存中,栈内存中并没有变量存放它在堆内存中的地址。static关键字一旦用了static关键字修饰,那么...



匿名对象

创建对象的标准格式:类名 对象名 = new 类名称();

匿名对象就是只有右边的对象,没有左边的名字和赋值运算符。

例子:new 类名称();

注意事项:匿名对象只能使用唯一一次,下次再创建对象已经不是原来的对象了。

匿名对象的具体内容存放在堆内存中,栈内存中并没有变量存放它在堆内存中的地址。

static关键字

一旦用了static关键字修饰,那么这样的内容不再属于对象自己,而是属于类的,所以凡是本类的对象,都共享同一份

static修饰成员变量:

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

static修饰成员方法:

一旦使用了static修饰成员方法,那么这就成为了静态方法。静态方法不属于对象,而是属于类的。

如果没有static关键字,那么必须首先创建对象,然后通过对象才能调用它。

对于静态成员方法和静态成员变量来说,可以通过类名称直接调用(推荐),也可以通过对象名进行调用

注意事项:

1、成员方法可以直接访问本类内部的成员变量、静态成员变量、成员方法、静态成员方法,

而静态成员方法能直接访问本类内部的静态成员变量、静态成员方法,不能直接访问非静态成员变量、非静态成员方法,但可以通过对象名调用(静态不能直接访问非静态)

原因:因为内存中先有静态内容,后又非静态内容(前面的不能知道后面的,后面的知道前面的)

2、静态方法中不能使用this

原因:this代表当前对象,静态中没有当前对象

static内存图:

Java基础语法学习(匿名对象、static关键字、常用工具类api)

静态成员变量的值放在方法区里面的静态区里,栈里面的通过静态成员变量的引用中的地址值,找到方法区的静态成员变量,然后通过它里面保存的地址值,找到静态区里面保存的值。全程和堆没关系,也就是和对象没关系。

静态代码块:

格式:

static{

//静态代码块内容

}

特点:当第一次用到本类时,静态代码块执行唯一的一次。通常用于为静态成员变量赋值

静态内容总是优先于非静态,所以静态代码块比构造方法先执行

常用工具类api

Api(应用程序编程接口)

Java api是JDK中提供给程序员一些封装好的类的方法

对于这些类,我们不需要知道底层如何实现,知道如何使用即可

Scanner类

主要作用:可以实现键盘输入数据到程序中

例子:

Scanner sc = new Scanner(System.in);

int num = sc.nextInt(); //获取int值

String str = sc.next(); //获取字符串

//键盘输入的所有值,默认都是字符串,当使用nextInt方法时,会把字符串转换为int值

Random类

主要作用:产生随机数字

Java基础语法学习(匿名对象、static关键字、常用工具类api)

nextInt()方法:范围时int所有范围,有正负两种

nextInt(n)方法:参数代表了范围,左闭右开区间[0,n)

ArrayList类(集合)

对象数组:存放对象的数组

但是数组有个缺点,就是有明确的长度限制,如果发现开始定义的数组长度不够,就要另外扩容,这时候可以使用集合解决这个问题

ArrayList是集合中的一种

ArrayList和数组的区别:数组的长度不可变,ArrayList集合的长度可以随意改变

ArrayList< E >: E是泛型的意思,可以限制输入元素的类型

泛型:装在集合当中的元素,都是统一的类型

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

例子:ArrayList< String > list =new ArrayList<>();

在jdk1.7开始,右侧的尖括号内部可以不写内容,但是<>本身还是要写的

注意事项:

对于ArrayList集合来说,直接打印得到的不是地址值,而是内容,而数组直接打印得到的是地址值。

那是因为ArrayList重写了toString方法。

ArrayList常用方法:

Java基础语法学习(匿名对象、static关键字、常用工具类api)

Java基础语法学习(匿名对象、static关键字、常用工具类api)

public boolean add(E e)

向集合当中添加元素,参数类型和泛型一样

public E get(int index)

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

public E remove(int index)

从集合当中删除元素,参数是索引编号,返回值就是被删除掉的元素

public int size()

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

备注:对于Arraylist来说,add添加元素是一定成功的,返回值可不用。但是对于其他集合来说,添加元素不一定成功,需要通过返回值判断是否添加成功。

遍历集合:

for(int i=0;i<list.size();i++){

System.out.println(list.get(i));

}

ArrayList存储基本数据类型

如果希望往集合ArrayList当中添加基本类型数据,必须使用基本类型对应的包装类

基本类型 包装类(引用类型)

byte Byte

short Short

int Integer(特殊)

long Long

float Float

double Double

char Character(特殊)

boolean Boolean

从jdk1.5开始,支持自动装箱、自动拆箱

自动装箱: 基本类型 --》 包装类型

自动拆箱: 包装类型 --》 基本类型

String类

程序当中所有的双引号字符串,都是String类对象

字符串的特点:

1、字符串是常量,他们的值创建后不能更改。字符串缓冲区支持可变的字符串。

Java基础语法学习(匿名对象、static关键字、常用工具类api)

2、正是字符串不可改变,所以字符串是共享使用

3、字符串效果上相当于char[]字符数组,但是底层原理是byte[]字节数组

创建字符串的常见3+1中方式

三种构造方法:

public String();//创建一个空白字符串,不含有任何内容

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

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

一种直接创建

String str = ‘‘hello’’; //右边直接用双引号

注意:直接写上双引号,就是字符串对象

字符串的常量池:

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

对于基本类型来说,==是进行数值的比较

对于引用类型来说,==是进行地址值的比较
Java基础语法学习(匿名对象、static关键字、常用工具类api)
没有实例化,通过直接赋值使用的字符串,是放在堆当中的字符串常量池里面。当字符串常量相同时,他们指向常量池相同的地址。
通过实例化创建的字符串,他们不是放在字符串常量池里面,而是放在堆的其他地方。每new一个实例,他们的地址值都不一样。因此实例化的相同内容的字符串,地址值是不同的。
无论是通过哪种方式进行创建字符串,他们的底层都是通过byte数组实现的。

字符串比较方法(区分大小写):

public boolean equals(Object obj)

只有参数是一个字符串并且内容相同的才会给true,否则返回false

备注:

1、任何对象都可以用Object接收

2、equals方法具有对称性,也就是a.equals(b)和b.equals(a)一样

3、如果比较双方一个常量一个变量,推荐把常量字符串写在前面

例子:

String str5 = null;

System.out.println(“abc”.equals(str5)); //推荐:false

System.out.println(str5.equals(“abc”)); //不推荐:有可能报错,空指针异常NullPointerException

字符串比较方法(不区分大小写):

public boolean equalsIgnoreCase(Object obj)

字符串获取长度方法:

public int length();

获取字符串当中含有的字符个数,拿到字符串长度

拼接字符串方法:

public String concat(String str);

将当前字符串和参数字符串拼接成返回值新的字符串

获取指定位置的单个字符方法:

public char charAt(int index)

查找参数字符串在本字符串中首次出现的索引位置

public int indexOf(String str)

如果没有则返回-1

字符串截取方法:

截取从参数位置一直到字符串末尾,返回截取的字符串

原来的字符串并没有改变,只是产生了一个新字符串

public String substring(int index)

截取从begin开始,到end结束的中间字符串

public String substring(int begin,int end)

[begin,end) 左边是闭区间,右边是开区间

字符串转换相关方法:

将当前字符串拆分为字符数组作为返回值

public char[] toCharArray();

获取当前字符串底层的字节数组:

public byte[] getBytes();

将所有出现的老字符串替换成新字符串,返回替换后的字符串

public String replace(CharSequnce oldstring,CharSequnce newstring)


字符串分割方法:

按照分隔符,将字符串分割成若*分

public String[] split(String regex);

注意事项:

split方法的参数其实是一个正则表达式

如果按照英文句号进行分割,必须在句号前用//转义

Arrays类

Arrays是一个与数组相关的工具类,里面提供了大量的静态方法,用来实现数组的常见操作

将参数数组变成字符串

public static String toString(数组)

按照升序(从小到大)排序数组

public static void sort(数组)

备注:

1、如果是数值,sort默认从小到大

2、如果是字符串,sort默认按照字母升序

3、如果是自定义类型,那么自定义类必须实现Comparable或者Comparator接口

Math类

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

public static double abs(double num):获取绝对值

public static double ceil (double num):向上取整

public static double floor (double num):向下取整

public static long round(double num):四舍五入

Math.PI代表近似的圆周率常量(double)

本文地址:https://blog.csdn.net/hailongcsdn/article/details/108015720