java面试:写一个工具类_java面试复习重点:类的管理及常用工具,教你抓住面试的重点!...

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.*只能导入

8d749ec55ef03cc86c899164dd57765c.png此时不将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不区分大小写

529010c5fae64bd43b5402ef29b13a9d.png

例子: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

{ 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:线程不同步不安全但执行效率更高edd6be2399990d4baa7a615d54952d56.png

StringBuffer54718a5ce3aa2db21a94d6289253f035.png

67b4dc3091999872ff4bb0f4478f1e42.png

正则表达式eea0c60f3ba0b57043a18e9adefeca4d.png

正则匹配步骤: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修饰

af68d9243bf0078677463569f8c6b22a.png

抽象类和接口抽象类:在父子之间建立契约abstract不能修饰构造函数

abstract不能和static final同时使用

子类必须要重写抽象类

接口:在任意类之间建立契约

最后

欢迎关注公众号:前程有光,领取一线大厂Java面试题总结+各知识点学习思维导+一份300页pdf文档的Java核心知识点总结!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值