Java基础语法学习(匿名对象、static关键字、常用工具类api)
匿名对象
创建对象的标准格式:类名 对象名 = new 类名称();
匿名对象就是只有右边的对象,没有左边的名字和赋值运算符。
例子:new 类名称();
注意事项:匿名对象只能使用唯一一次,下次再创建对象已经不是原来的对象了。
匿名对象的具体内容存放在堆内存中,栈内存中并没有变量存放它在堆内存中的地址。
static关键字
一旦用了static关键字修饰,那么这样的内容不再属于对象自己,而是属于类的,所以凡是本类的对象,都共享同一份
static修饰成员变量:
如果一个成员变量使用了static关键字,那么这个变量不再属于对象自己,而是属于所在的类
static修饰成员方法:
一旦使用了static修饰成员方法,那么这就成为了静态方法。静态方法不属于对象,而是属于类的。
如果没有static关键字,那么必须首先创建对象,然后通过对象才能调用它。
对于静态成员方法和静态成员变量来说,可以通过类名称直接调用(推荐),也可以通过对象名进行调用
注意事项:
1、成员方法可以直接访问本类内部的成员变量、静态成员变量、成员方法、静态成员方法,
而静态成员方法能直接访问本类内部的静态成员变量、静态成员方法,不能直接访问非静态成员变量、非静态成员方法,但可以通过对象名调用(静态不能直接访问非静态)
原因:因为内存中先有静态内容,后又非静态内容(前面的不能知道后面的,后面的知道前面的)
2、静态方法中不能使用this
原因:this代表当前对象,静态中没有当前对象
static内存图:
静态成员变量的值放在方法区里面的静态区里,栈里面的通过静态成员变量的引用中的地址值,找到方法区的静态成员变量,然后通过它里面保存的地址值,找到静态区里面保存的值。全程和堆没关系,也就是和对象没关系。
静态代码块:
格式:
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类
主要作用:产生随机数字
nextInt()方法:范围时int所有范围,有正负两种
nextInt(n)方法:参数代表了范围,左闭右开区间[0,n)
ArrayList类(集合)
对象数组:存放对象的数组
但是数组有个缺点,就是有明确的长度限制,如果发现开始定义的数组长度不够,就要另外扩容,这时候可以使用集合解决这个问题
ArrayList是集合中的一种
ArrayList和数组的区别:数组的长度不可变,ArrayList集合的长度可以随意改变
ArrayList< E >: E是泛型的意思,可以限制输入元素的类型
泛型:装在集合当中的元素,都是统一的类型
注意:泛型只能是引用类型,不能是基本类型
例子:ArrayList< String > list =new ArrayList<>();
在jdk1.7开始,右侧的尖括号内部可以不写内容,但是<>本身还是要写的
注意事项:
对于ArrayList集合来说,直接打印得到的不是地址值,而是内容,而数组直接打印得到的是地址值。
那是因为ArrayList重写了toString方法。
ArrayList常用方法:
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、字符串是常量,他们的值创建后不能更改。字符串缓冲区支持可变的字符串。
2、正是字符串不可改变,所以字符串是共享使用
3、字符串效果上相当于char[]字符数组,但是底层原理是byte[]字节数组
创建字符串的常见3+1中方式
三种构造方法:
public String();//创建一个空白字符串,不含有任何内容
public String(char[] array);//根据字符数组的内容,来创建对应的字符串
public String (byte[] array);//根据字节数组的内容,来创建对应的字符串
一种直接创建
String str = ‘‘hello’’; //右边直接用双引号
注意:直接写上双引号,就是字符串对象
字符串的常量池:
程序中直接写上双引号字符串,就在字符串常量池中。
对于基本类型来说,==是进行数值的比较
对于引用类型来说,==是进行地址值的比较
没有实例化,通过直接赋值使用的字符串,是放在堆当中的字符串常量池里面。当字符串常量相同时,他们指向常量池相同的地址。
通过实例化创建的字符串,他们不是放在字符串常量池里面,而是放在堆的其他地方。每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
上一篇: 小白学习之306累加数
下一篇: 如何判断1024!末尾有多少个0