1.简单说一下装饰者设计模式
1.扩展功能不写很多类去继承
2.继承会浪费很多没有必要的空间
3.我们可以在装饰类的成面上不挺把它看成被装饰类,从而来产生更多不同的功能
2.\S:匹配除空白符之外的所有字符
注意:正则表达式执行匹配的时候,逻辑表达式两边不进行换行
3.为什么abstract与static不能用在一起?
因为脑子短路了,还是补充一下,静态方法是通过类调用的,然而
静态方法如果是抽象方法,就没有实体,怎么通过类名去调用呢
4.说一下配置path环境变量
%JAVA_HOME%\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\
上面是我电脑中的path
如果你的开发环境变量是放到最后的就不加;
%%里面数据就是引用一个我们配置好的环境变量的值
5.java数据类型:
基本数据类型:
数值型:int short byte long 这里相对于c语言来说多出来一个byte字节类型
char类型;占用的是2个字节
浮点类型:float double
布尔型boolean
下面说引用数据类型:
数组其实是分为有在堆上面的数组和在栈上面的数组:当使用new对象创建数组的时候肯定是分配到堆上面的,直接赋值就是在栈上面
类,interface,数组
6.java定义二维数组列数要表明行数与列数,每一行都是一个一维数组
int[][] arr = new int[2][];
arr[0][0] = 1;
arr[1][1] = 2;
for(int[] res : arr) {
for(int data : res) {
System.out.println(data);
}
}
上面这样来处理数据会出现空指针异常,很明显是错误的定义
7.简单说一下匿名对象的应用场景:
1.一般我们不会给匿名对象赋予属性值,因为你永远无法获取
2.两个匿名对象永远不可能是同一个对象
8.清除一个目录下面空文件与文件夹
File file = new File("E:\\java");
File[] filearr = file.listFiles();
for(File res : filearr) {
if(res.length() == 0) {
res.delete();
}
}
9.构造函数参数与类里面属性重名,然后不用this赋值,为什么不会报错
this在于区分构造函数中属性与参数同名的问题,this指出了为调用者对象的属性赋值
10.类的加载机制,是按需加载,就是什么用到就加载进去
11.从某种层面上来说,按位运算符是不能参与逻辑运算的,但是他还是可以参与逻辑判断的
12.构造函数参数赋值,不加this为什么与属性同名的参数赋值不了,因为在类的内部中,默认优先使用内部属性,加this就是指向了堆里面的属性,进而与栈里面的区分开了
13.在用cmd对java程序进行编译的时候,如果文件有包一定要加上参数-d进行编译 -d我们指定class类文件的存放地方
我们在运行处理的时候,包名.类名才是类文件真正的名字
14.反斜杠我们打印就必须要进行转义
如果是在字符串里面,\\转义的反斜杠代占不占用字符,这个只占用一个字节
转义字符一定要进行转义处理
subString(索引)-》这个就是会包头,包含头部的数,一般的字符串截取函数都是包头不包尾
15.注意不管我们以什么方式去执行线程,我们线程执行的优先顺序是线程之间的资源争夺战
cpu具有等待资格与执行权限
线程在cpu的内部进行资源争夺战:也就是说线程会不断的在可运行状态或者运行状态之间来回切换
如果中间调用了sleep方法与wait方法,线程会进入临时阻塞状态,直到休眠时间结束或者被唤醒
只有在运行状态下,才具有cpu的执行权