java基础:常见类和对象
1.常见类和对象:
java.lang.Object类,Java中的每个类都直接或间接地继承自Object类,如果没有明确指定一个类继承另一个类,那么它的默认父类就是Object类;
例如多态:
package java_jichu; public class java_3_29 { public static void main(String[] args) { Object obj = new Person(); } } class Person{ }
2.toString方法,他是Object类中的一个方法,作用是返回对象的字符串表示形式,一般形式为类名@哈希码的十六进制表示;
package java_jichu; public class java_3_29 { public static void main(String[] args) { Object obj = new Person(); String s = obj.toString(); System.out.println(s); } } class Person{ }
注意:由于toString默认返回对象的地址,所以为了直观理解对象的内容,我们可以重写这个方法;
3.hashCode()方法:获取类的内存地址
默认情况下,hashCode方法返回的是对象的内存地址经过哈希运算后的整数值;
注意:当重写equals方法时,必须重写hashCode方法,以保证相等的对象具有相同的哈希码;
重写hashCode方法时,应该尽量让不相等的对象产生不同的哈希码,以提高性能;
4.equals方法:
package java_jichu; public class java_3_29 { public static void main(String[] args) { Object obj = new Person(); System.out.println(obj.equals(new Person())); } } class Person{ }
判断两个对象是否相等,如果相等返回true,如果不相等返回false
它比较对象时,默认比较的就是内存地址;
package java_jichu; public class java_3_29 { public static void main(String[] args) { Object obj = new Person(); Person otherperson = new Person(); System.out.println(obj.hashCode()); System.out.println(otherperson.hashCode()); System.out.println(obj.equals(otherperson)); } } class Person{ }
返回为false;
同时equals方法还对应了一个equalsIgnoreCase方法:
意思是在比较过程中忽略大小写;
package java_jichu; public class java_3_29 { public static void main(String[] args) { String a = "a"; String b = "A"; System.out.println(a.equalsIgnoreCase(b)); } }
返回结果为true;
5.数组:
声明方法:
package java_jichu; public class java_3_29 { public static void main(String[] args) { String[] names = new String[3]; } }
类型+【】+ 变量名 = new 类型【数组大小】
添加数据:
package java_jichu; public class java_3_29 { public static void main(String[] args) { String[] names = new String[3]; names[0] = "zhangsan"; names[1] = "lisi"; } }
如果重复给相同的索引添加数据,那么等同于修改数据;
还有其他的添加数据方法:
package java_jichu; public class java_3_29 { public static void main(String[] args) { String[] names = {"zhangsan", "lisi"}; } }
6.数组的方法:length方法;
package java_jichu; public class java_3_29 { public static void main(String[] args) { String[] names = {"zhangsan", "lisi"}; System.out.println(names.length); } }
数组的数据结构实际上是这样的:
7.二维数组:
package java_jichu; public class java_3_29 { public static void main(String[] args) { String[][] names = {{"zhangsan"}, {"lisi"}, {"wangwu"}}; } }
标准的定义形式:
public class java_3_29 { public static void main(String[] args) { String[][] names = new String[3][3]; } }
8.使用二维数组输出九层妖塔:
package java_jichu; public class java_3_29 { public static void main(String[] args) { int row = 9; //定义行 int col = 2 * row - 1; //定义一列有多少个*; String[][] nineTower = new String[row][col]; //创建一个二维数组; for (int i = 0; i < row; i++){ //对一行循环; for(int j = 0; j < col; j++){ //对一列循环; if (j >= (row - 1) - i && j <= (row - 1) + i){ //从中间向两侧顺延同时满 nineTower[i][j] = "*"; //条件则赋值* } else { nineTower[i][j] = " "; //其他空间给空格 } } } for (int i = 0; i < row; i++){ for (int j = 0; j< col; j++){ System.out.print(nineTower[i][j]); //打印操作,每个数据不换行,然后打印完 } //一行之后换行; System.out.println(); } } }
9.字符串的拼接:可以用+号进行操作,但必须保证加号的一端是字符串,只要一个对象是字符串,那默认把另一个对象转换为字符串进行拼接;
package java_jichu; public class java_3_29 { public static void main(String[] args) { String s = "a" + "b"; String s1 = "ab"; System.out.println(s.hashCode()); System.out.println(s1.hashCode()); } }
结果一样:因为内容一样,地址一样;
9.concat方法:是String的一个实例方法,它用于将指定的字符串连接到当前字符串的末尾,并返回一个新的字符串对象,原字符串对象不会被改变;
package java_jichu; public class java_3_29 { public static void main(String[] args) { String s1 = "ab"; System.out.println(s1.concat("abc")); } }
10.compareTo方法:
用于比较两个对象的值,Integer中是比较值大小,String中是比较在字典中的顺序(unicode值);
返回值为一个整数,相等则返回0,调用对象大于参数则返回正数,小于则返回负数;
11.字符串的截断操作:截断字符串的操作:
package java_jichu; public class java_3_29 { public static void main(String[] args) { String s = "hello world"; String s1 = s.substring(0, 3); System.out.println(s1); } }
结果为hel,第一个参数为起始位置索引(包含),第二个参数为结束位置索引(不包含);
package java_jichu; public class java_3_29 { public static void main(String[] args) { String s = "hello world"; String s1 = s.substring(0, 3); System.out.println(s1); System.out.println(s.substring(0, "hello".length())); System.out.println(s.substring(6, s.length())); System.out.println(s.substring(6)); } }
如果只传一个值,那么就截取起始位置之后的所有;
12.分解字符串:split方法:
package java_jichu; public class java_3_29 { public static void main(String[] args) { String s = "hello world"; String[] s1 = s.split(" "); System.out.println(s1[0]); } }
意思是按照空格为界分割字符串,并存在字符数组中;
13.空格清除:trim方法 package java_jichu; public class java_3_29 { public static void main(String[] args) { String s = " hello world "; String s1 = s.trim(); System.out.println(s1); } } 14.字符串的替换:replace方法:返回一个字符串;
package java_jichu; public class java_3_29 { public static void main(String[] args) { String s = "hello world"; String s1 = s.replace("world", "java"); System.out.println(s1); } }
15.大小写转换:toLowerCase();(转为小写);
toUpperCase(转为大写);
package java_jichu; public class java_3_29 { public static void main(String[] args) { String s = "Hello World"; System.out.println(s.toLowerCase()); System.out.println(s.toUpperCase()); } }
16.charAt方法,根据索引值找到指定位置字符;
package java_jichu; public class java_3_29 { public static void main(String[] args) { String s = "hello world"; System.out.println(s.charAt(0)); } }
17.indexof方法:用于获取数据在字符串中第一次出现的位置;
对应的还有数据在最后一次出现的位置:lastIndexof
返回索引值;
package java_jichu; public class java_3_29 { public static void main(String[] args) { String s = "hello world hello"; System.out.println(s.indexOf("hello")); System.out.println(s.lastIndexOf("hello")); } }
18.contains方法,检查是否包含指定的字符串,返回布尔类型;
package java_jichu; public class java_3_29 { public static void main(String[] args) { String s = "hello world hello"; System.out.println(s.contains("world")); } }
19.判断字符串是否以指定的数据开头,返回布尔类型:startwith方法
对应的还有:endwith方法;
package java_jichu; public class java_3_29 { public static void main(String[] args) { String s = "hello world hello"; System.out.println(s.startsWith("hello")); } }
20.判断是否为空:isEmpty方法:
21.包装类:
Byte Short Interger Long Float Double Character Boolean
转换模版:
自动装箱:
package java_jichu; public class java_3_29 { public static void main(String[] args) { int i = 10; Integer i1 = i; //等价于:Integer i1 = Integer.valueOf(i); } }
自动拆箱:
package java_jichu; public class java_3_29 { public static void main(String[] args) { int i = 10; Integer i1 = Integer.valueOf(i); int i2 = i1; //等价于: int i2 = i1. intvalue(); } }