Java基础
API定义
应用程序编程接口,是一种预先定义的函数,目的是提供应用程序与开发人员基于某软件或者是硬件的以访问一组例程的能力,而且无需要访问的源码,或者是理解工作内部的细节
object:
所有对象的顶级的父类,每个类都直接或者间接的继承object
存在于java.lang包中,这个过程不需要进行手动的导入包
Tostring:
默认返回,类名@地址 的格式,来展示对象的地址值,重写后返回值是将返回值属性值进行拼接成为字符串
就是返回我们的想要的值,将返回值的值转化为结果的字符串
equals(object obj)
当前对象和参数的对象比较大小,默认的是进行比较内存的地址,如果要比较的对象的属性,可以进行重写该方法,s1==s2 s1.equals(s2)
该代码里面实现了tostring和equals方法重写
package com.tedu.api;
import java.util.jar.Attributes.Name;
//测试object类的tostring()equals()
public class Test1_Object {
public static void main(String[] args) {
Student student=new Student();
student.setAge(15); //进行设置数值
student.setId(001); //进行提供编号
student.setName("王老师");
//进行查看对象的值,之前利用的是get的方法进行一一打印,
//现在进行方法的重写,进行打印出元素的数组
//由于重写了student类中的tostring中的方法,
//再一次进行输出的时候输出的就不在是地址值,而是属性值拼接成的字符串
//tostring是每个类中自带的属性方法,直接可以进行调用就可以
System.out.println(student);
Student student1=new Student();
student1.setAge(15); //进行设置数值
student1.setId(001); //进行提供编号
student1.setName("王老师");
System.out.println(student1);
System.out.println(student==student1);
System.out.println(student.equals(student1));
}
}
//创建Student类
class Student{
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//进行方法的封装
public void setName(String name) {
this.name=name;
}
public String getName() {
return name;
}
//进行重写tostring的放方法,返回的类型是string的类型
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
}
//重写equals()
//默认的提供的是比较对象的地址值,==
//如果每一个的对象的属性值完全的相同,那么肯定是同一个对象,只需要输出一个就可以
@Override
//这儿就是说进行传过来两个数据,通过&&函数进行数据的比较
public boolean equals(Object obj) {
// 进行重写equal的方法,判断两个对象的属性值全部都相同,返回的结果就是ture
//把Object强转化为student的方法
Student student=(Student) obj; //进行大转小的过程
//student的属性和this的属性进行相比较
return student.id==this.id&&name==this.name&&age==this.age;
}
}
string
1.是一个封装的char[]数组的对象,本身是具有角标的特点
2.字符串的长度不可以变化
创建string的对象
如果是第一次使用字符串的,Java会在字符串常量中进行创建一个对象,再一次使用相同的功能的时候,会直接进行访问常量池中存在的对象
方法一:public string (char[] char){},char[] char={........},new string(char)
方法二:String string ="ABC“
字符串的连接效率低的问题:
代码中常用的计时方式
long end=System.currentTimeMillis();
string中常用的方法:
length()
charAt()
lastIndexOf()
substring()
equals()
startsWith()
endsWith()
split()
trim() 去除字符串两端的空格
package com.tedu.api;
import java.lang.reflect.Array;
import java.util.Arrays;
public class Test666 {
public static void main(String[] args) {
String string="abc";
//可以利用下标来获取字符串的值
System.out.println(string.toCharArray()[1]);
//获取字符串的长度
System.out.println(string.length());
for (int i = 0; i < string.length(); i++) {
System.out.print(string.toCharArray()[i]);
//根据下标,获取每个下标对应的元素
char c =string.charAt(i);
System.out.println(c);
//截取字符串,这个方法是从开始进行截取,保留后面的部分
System.out.println(string.substring(1));
//截取中间的部分,特点是含头不含尾
System.out.println(string.substring(0, 2));
//根据特殊的字符进行切割字符串
}
String string2="a b c d e";
String[] newString=string2.split(" ");
//将字符打引的方法
System.out.println(Arrays.toString(newString));
}
}
StringBuilder和StringBuffer
特点:
- 封装了char[]数组
- 是可变的字符序列
- 提供了一组可以对字符内容修改的方法
- 常用append()来代替字符串做字符串连接
- 内部字符数组默认初始容量是16:super(str.length() + 16);
- 如果大于16会尝试将扩容,新数组大小原来的变成2倍+2,容量如果还不够,直接扩充到需要的容量大小。int newCapacity = value.length * 2 + 2;
测试字符串的连接
StringBuffer stringBuffer=new StringBuffer();
//直接在自己的基础上进行修改拼接
stringBuffer.append(string);
方法:append()
在原有的基础上进行直接的修改和拼接
正则表达式:
正确的字符串的格式的规则
常用来判断用户的输入的格式是否符合格式的要求
注意严格的大小写的问题
常见的语法:
string中提供了支持正则表达式的方法
package com.tedu.api;
import java.util.Scanner;
//测试正则表达式
public class Test3_Regex {
public static void main(String[] args) {
//接受用户输入的身份的号码
String input=
new Scanner(System.in).nextLine();
//18位或者是17+X
//如果和正则表达式匹配居ok
//通过match()进行匹配正则表式
String regex="\\d{17}[0-9X]";
if(input.matches(regex)) {
System.out.println("输入的数据正确");
}else {
System.out.println("数据输入错误");
}
}
}
包装类型:
Number
数字的包装类:主要的功能就是,把其他的类型转化为数字的基本的类型
Double
Double double=new Double(3.14);
Double double=new Double("3.14");
这时候就是把3.14包装成为doubl的类型
方法:
parseDouble方法public static double parseDouble(String s) 把字符串转化为double的 类型
parseLong(string s) 就是把字符串类型的转化为long的类型
parseInt(string s)就是把字符串类型的转化为整数的类型
public static Double valueOf(String s)
valueOf(String string):就是把字符串包装成为类型Double Long Integer
valueOf(Double double):把基本的类型包装成类型 Double Long Integer
内部类:
就是嵌套定义中,可以是方法中,也可以是局部的代码块中
匿名内部类:
没有名字的类,没有办法new出来对象,那就在定义时候new出来一个类
类似于 :正常情况创建 Student student=new Student();student.show()
new student().how();
功能得限制性:产生的对象只能存在一次,运行一次后直接销毁
匿名内部类的代码实现:
package com.tedu.apidemo;
public class Test5_InnerClass2 {
public static void main(String[] args) {
//就行直接的创建了接口的实现类一样
new inter1() {
@Override
public void eat() {
System.out.println("测试吃的功能");
}
@Override
public void sleep() {
System.out.println("测试睡觉的功能");
}
//通过匿名的内部类进行调用自身的功能
}.eat();//通过自身去触发要实现的功能
}
}
interface inter1{
void eat();
void sleep();
}
进制