java温习: 类的治理及常用工具类
包
- 写在程序文件的第一行
- 一个Java 源文件中只能申明一个包,
且申明语句只能作为源文件的第一条指令 - 导入类能导入非public类,然而不能用因为在其余包缺省的权限用不了
package Testp;
import Testpackage.*;
public class C {
public static void main(String[] args) {
A a=new A();
B b=new B();
}
}//Testpackage.*只能导入
- 此时不将AB两类放在同一个.class文件不然有一个肯定是非public类,C等下用不了这个非public
- 留神
.*是对于包来说的,当把AB分成两个class文件时就能够两个全副导入
了 - Java编译器为所有程序主动导入包 java.lang
- 无名包不能导入.* 无名包中的类无奈被导入
- 动态导入的时候如果是import aa.;能够导入类的所有成员包含动态,如果是import static aa.A.;是导入A中的所有动态成员,非动态的就会报错,所以能够将A的所有成员改成动态的
- 一个class文件(.java)只能有一个pubic类如果一个包外面有多个public类即创立多个class文件
包装器类
- Byte 、Short 、Integer 、Long 、Float 、Double 、
Character 、Boolean -
包装器类的2种构造函数
包装器类名(根本类型值)
-
包装器类名(根本类型值的字符串)
- Character类构造函数只能是字符参数;
- Boolean包装器对ture/false不辨别大小写
- 例子:
float f=(new Double(100.2)).floatValue();
int i=(new Double("100.2").intValue());//XXXvalue():包装器类-根本类型
float f=Float.parseFloat("11.3f");
int d=Integer.parseInt("25");
//字符串-根本类型
Double d=Double.valueof("25.4");//Character包装器类没有这个办法
//字符串-包装器
//根本类型、包装器类型-字符串
String s1=Double.toString(3.14);//toString有静态方法也有实例办法
String s2=new Double(3.14).toString()
- 留神传参数时候,不如果参数是包装器类不能间接传一个根本类型此时不反对主动装箱拆箱
-
要用构造函数主动装箱
- Double a=1.2;// Double a=new Double(1.2); 主动装箱
- double b= a ; //主动拆箱
枚举
- enum枚举类型名字{枚举常量列表}
public class Ch_5_5_2 {
enum Season { 秋季, 冬季, 秋季, 夏季; }
public static void main (String[] args) {
Season [] s= Season.values();
for (int i=0; i<s.length; i++)
{ switch(s[i]) {
case 秋季: //case Season. 秋季 编译错
System.out.println(“ 春困”); break;
case 冬季:
System.out.println(“ 夏打盹”); break;
case 秋季:
System.out.println(“ 秋乏”); break;
case 夏季:
System.out.println(“ 睡不够的冬三月”); break; }
}
}
}
数组的高级利用
- 要导入
import java.util.Arrays;
- 排序办法和binarySearch前提是数组不能为降序能够是无序或者升序
int i=Arrays.binarySearch(a1,3);
返回3这个元素呈现第一次的下标Arrays.fill(c,4);
将数组c填充斥4
字符串的高级利用
-
StringBuilder:线程不同步不平安但执行效率更高
-
StringBuffer
正则表达式
- 正则匹配步骤:
Pattern p=Pattern.compile(reg1);//reg1为模式串正则表达式
Matcher m=p.matcher(str);//str是待匹配串
m.group();m.find;m.start()
String[ ] split(String regex)
regex 是分隔串,也能够是正则表达式
作用:宰割字符串,生成数组
String s="aa,bb,cc,dd";
String[] sa=s.split(","); //以 , 作为s的分隔串,提取字符串
for(String s1:sa)
System.out.println(s1);
String replaceFirst(String regex, String rp)
作用:用rp 替换regex 的首次呈现String replaceAll(String regex, String rp)
作用:用rp 替换regex
随机数类
//要导入java.util.Random
Random r=new Random();
int x,i;
for(i=1;i<=10;i++){
x=r.nextInt(10)+1;//默认从0开始,要获取从1-10的就要+1
System.out.println(x);
}
面向对象程序设计
对象和对象援用的内存治理
-
栈(主动管理机制)
- 栈空间中的数据被零碎主动治理即在函数调用时主动创立数据空间,在函数运行完结时主动开释数据空间
- 函数中定义的所有变量无论是根本类型还是援用类型均存储于栈空间
-
堆(手动管理机制)
- 实现按需分配或开释
- 所有对象均存储于堆空间
-
构造函数
- 与类同名,不必定义返回值类型,也没有return 语句,即便无返回值,也不能用void 申明
- 应用new 实例化对象时,零碎依据给出的
参数表调用对应的构造函数。这就是构造函数重载
-
结构代码块
- 作用:对所有对象进行对立初始化
- 特点:
对象一建设就执行并且优于构造函数执行
class Person {
private String name;
private int age;
{ age=15; }//结构代码块
Person() {
System.out.println("A:name="+name+",age="+age);}
Person(String n) {
name=n;
System.out.println("B:name="+name+",age="+age);
}
}
对象的销毁
-
常量final
- 常量援用不可更改即指向某一对象不可更改,然而指向对象的内容能够批改
- 留神如果是string或者数组等援用肯定在堆外面还要指向一个最终的数据
- a=b是a指向b指向的对象
- ==判断地址是否雷同
- a.equals(b)判断内容是否雷同
-
对象数组
- new String[10] 不是创立String 类对象(而是数组 对象 ),因而未调用String 的构造函数。
- sa[0] 是String 援用,不是String 对象,sa[0]指向的那个才是string对象
继承
- 对于超类的公有成员领有但不能应用
- 结构对象时,会主动调用该类与超类的结构函
数,调用秩序与派生秩序雷同 - 若超类有非private的
无参构造函数
,子类则主动调用
;若超类是有参构造函数
,则子类构造函数中必须显式调用超类的构造函数
,否则编译错
单例模式
class Student{
String name;
int age;
private Student(){}
public static Student creat(){//肯定是static这样能够通过类名调用
Student a=new Student();//在办法中new
return a;
}
}
Student st=Student.creat();
System.out.println(st.age);
多态
- 意义:一名多义
-
重载(编译时决定动态绑定)同一个对象同一个办法的参数不同
- 狗1.嗅(客人气息 q); 狗1.嗅(骨头气息 q); ……
- 留神
重载传参
时,如果是根本类型数据能够强制转换大的能够转换成小的,然而小的不能转换成大的
-
重写(运行时决定 动静绑定)不同对象同一个行为的本质不同
- 狗 d=new 藏獒()/ new 哈士奇(); d.咬( );//重写咬这个办法不同的new的对象调用这个办法是不同的,尽管这个办法是extents父类的
保障同名同参同返回类型权限不能放大
- 如果要禁止一个类派生子类那么将类设置
为final
- 禁止子类重写某个操作能够将操作设置为
final或者static
- 不心愿被重写的办法能够:
final/static/private
//类没有private润饰
- 狗 d=new 藏獒()/ new 哈士奇(); d.咬( );//重写咬这个办法不同的new的对象调用这个办法是不同的,尽管这个办法是extents父类的
抽象类和接口
-
抽象类:在父子之间建设契约
- abstract不能润饰构造函数
- abstract不能和static final同时应用
- 子类必须要重写抽象类
- 接口:在任意类之间建设契约
最初
欢送关注公众号:前程有光,支付一线大厂Java面试题总结+各知识点学习思维导+一份300页pdf文档的Java外围知识点总结!