java学习7

字符串

String类代表字符串,Java程序中的所有字符串字面值都作为此类的实例来实现。即程序中所有双引号字符串,都是String类的对象。字符串是常量。

字符串特点:

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

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

3种构造方法:
	public String()	【创建一个空白字符串,不含有任何内容】
	public String(char[] array)	【根据字符数组的内容,来创建对应的字符串】
	public String(byte[] array)	【根据字节数组的内容,来创建对应的字符串】
1种直接创建:
	String str = "hello"; //右边直接用双引号
	【直接写上双引号,就是字符串对象】
public static void main(String[] args) {
		
		//使用空参构造
		String str1 = new String();
		System.out.println("第一个字符串为:" + str1);
		
		//使用字符数组创建字符串
		char[] charArray = {'A','B','C'};
		String str2 = new String(charArray);
		System.out.println("第二个字符串为:" + str2);
		
		//使用字节数组创建字符串
		byte[] byteArray = {97 , 98 , 99};
		String str3 = new String(byteArray);
		System.out.println("第三个字符串为:" + str3);//输出:第三个字符串为:abc
		
		//直接创建
		String str4 = "Hello";
		System.out.println("第四个字符串为:" + str4);
		
	}

字符串的常量池

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

字符串常量池在堆中(jdk1.7开始)。

对于基本类型来说,“==”是进行数值的比较。
对于引用类型来说,“==”是进行地址值的比较。

字符串的比较相关方法

比较字符串的内容:

public boolean equals(Object obj)
【只有参数是一个字符串,并且内容相同才会给true,否则返回false】
【参数可以是任何对象,任何对象都能用Object进行接收】
【equals方法具有对称性,即a.equals(b)和b.equals(a)效果一样】

public boolean equalsIgnoreCase(String str)
【忽略大小写进行内容比较】

字符串的获取相关方法

public int length()
【获取字符串当中含有的字符个数,拿到字符串的长度】

public String concat(String str)
【将当前字符串和参数字符串拼接成为返回值新的字符串】

public char charAt(int index)
【获取指定索引位置的单个字符】

public int indexOf(String str)
【查找参数字符串在本字符串当中首次出现的索引位置,如果没有返回-1值】

字符串的截取相关方法

public String substring(int index)
【截取从参数位置一直到字符串末尾,返回新字符串】

public String substring(int begin,int end)
【截取从begin开始,一直到end结束,即[begin,end)中间的字符串】

字符串的转换相关方法

public char[] toCharArray()
【将当前字符串拆分成为字符数组作为返回值】

public byte[] getBytes()
【获得当前字符串底层的字节数组】

public String replace(charSequence oldString,charSequence newString)
【将所有出现的老字符串替换成为新的字符串,返回替换之后的结果新字符串】
【charSequence意思为可以接收字符串类型】

字符串的分割方法

public String[] split(String regex)
【按照参数的规则,将字符串切分成为若干部分】
【split方法的参数其实是一个“正则表达式”,如果按照英文句点“.”来切分,必须写“\\.”】

静态static关键字

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

静态static关键字修饰成员变量

public class Demo01StaticField {
	
	public static void main(String[] args) {
		
		Student stu1 = new Student("周老大", 18);
		stu1.room = "1101";
		System.out.println("姓名:" + stu1.getName() + ",年龄:" + stu1.getAge()
							+ ",教室:" + stu1.room + ",学号:" + stu1.getId());
		
		Student stu2 = new Student("周老二", 17);
		System.out.println("姓名:" + stu2.getName() + ",年龄:" + stu2.getAge()
							+ ",教室:" + stu2.room + ",学号:" + stu2.getId());
		
	}

}
public class Student {
	
	private int id;
	private String name;
	private int age;
	static String room;	
	private static int idCounter = 0;//学号计数器,每new一个新对象的时候,计数器++
	
	public Student() {
		this.id = ++idCounter;
	}
	public Student(String name, int age) {
		this.id = ++idCounter;
		this.name = name;
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
	

}

静态static关键字修饰成员方法

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

1.如果没有static关键字那么必须首先创建对象,然后通过对象才能使用它。
2.如果有了static关键字那么不需要创建对象,直接就能通过类名称来调用它。
	类名称.静态变量
	类名称.静态方法()
3.使用本类当中的静态方法可以省略类名。

注意事项:

1.静态不能直接访问非静态。
【原因:因为内存当中是先有的静态内容,后有的非静态内容】
2.静态方法中不能使用this关键字
【原因:this代表当前对象,通过谁调用的方法,谁就是当前对象】

静态代码块

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

特点:
1.当第一次用到本类时,静态代码块执行唯一的一次。
2.静态内容总是优先于非静态,所以静态代码块比构造方法先执行。

静态代码块的典型用途:
用来一次性的对静态成员变量进行赋值。

数组工具类Arrays

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

public static String toString(数组)
【将参数数组变成字符串,按照默认格式[元素1,元素2,元素3...]】

public static void sort(数组)
【按照默认升序(从小到大)对数组的元素进行排序】
【如果是数值,sort默认按照升序从小到大】
【如果是字符串,sort默认按照字母升序】
【如果是自定义的类型,那么这个自定义类型需要有Comparable或者Comparator接口的支持】
import java.util.Arrays;

public class Demo03Arrays {

	public static void main(String[] args) {
		
		int[] intArray = {1,2,3};
		//将int[]数组按照默认格式变成字符串
		String str = Arrays.toString(intArray);
		System.out.println(str);
		
		int[] array = {5,87,879,5,4,9,6,7};
		Arrays.sort(array);//[4, 5, 5, 6, 7, 9, 87, 879]
		System.out.println(Arrays.toString(array));
		
	}
	
}

数学工具类Math

Java.util.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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值