权限修饰符,jar包,模板模式,清除重复元素
权限修饰符:权限修饰符就是控制被修饰的成员的范围可见性。
(从大到小) public(公共) protected(受保护) default(缺省) private(私有)
同一个类: true true true true
同一个包: true true true false
子父类: true true false false
不同包: true false false false
注意:不同包下面只有public与protected可以访问、而且protected必须是在继承关系下才能访问、
打jar包:需要使用jdk的开发工具(jar.exe)
jar的用法:
使用格式:
jar cvf jar文件的名字 class文件或者是文件夹
打包jar包要注意的事项:
1,一个程序打完了jar之后必须要清单文件上指定入口类:格式:Main-Class: 包名.类名
2,jar包双击运行仅对于图形化界面的程序起作用,对控制台的程序不起作用、
作用:
1,方便用户快速运行一个项目。
2,提供工具类以jar包的形式给别人使用、
如果使用jar包里面的类必须要先设置classpath的路径。
jre = jvm + 核心类库
代码示例:
package aa;
import javax.swing.*;
import aa.Demo09;
class Demo01 extends Demo09{
public static void main(String[] args) {
JFrame frame = new JFrame("QQ程序");
frame.setSize(400,500);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Demo09 b = new Demo09();
b.print();
}
}
运行结果:

打jar后的结果:

模板模式:解决某类事情的步骤有些是固定的,有些是会发生变化的,那么这时候我们可以为这类事情提供一个模板代码,从而提高效率。
需求:编写一个计算程序运行时间的模板。
模板模式的步骤:
1,先写出解决该类事情其中的一件的解决方案。
2,分析代码,把会发生的代码抽取出来独立为一个方法,把该方法描述成一个抽象的方法。
3,使用final修饰模板方法,防止别人改写你的模板方法。
代码演示:
abstract class MyRuntime{
public final void getTime(){
long startTime = System.currentTimeMillis();
code();
long endTime = System.currentTimeMillis();
System.out.println("运行时间:"+(endTime-startTime));
}
public abstract void code();
}
class Demo01 extends MyRuntime{
public static void main(String[] args) {
Demo01 d = new Demo01();
d.getTime();
}
public void code(){
int i = 0;
while (i<10000){
System.out.println("i="+i);
i++;
}
}
}
运行结果:

currentTimeMillis()记录的是以毫秒为单位记录时间
目前有数组:int[] arr = {11,2,4,10,11}
定义一个函数清除该数组的重复元素,返回的数组存储了那些非重复的元素而且数组不被浪费
分析:
1,确定新数组的长度,原数组的长度-重复数组
代码示例:
import java.util.Arrays;
class Demo02 {
public static void main(String[] args) {
int[] arr = {11,2,4,2,10,11};
arr = clearRepeat(arr);
System.out.println("清除重复元素的数组:"+ Arrays.toString(arr));
}
public static int[] clearRepeat(int[] arr){
int count = 0;
for (int i = 0;i<arr.length-1;i++){
for (int j = i+1;j<arr.length;j++){
if (arr[i]==arr[j]){
count++;
break;
}
}
}
int newLength = arr.length -count;
int[] newArr = new int[newLength];
int index = 0;
for (int i =0;i<arr.length;i++){
int temp = arr[i];
boolean flag = false;
for (int j= 0;j<newArr.length;j++){
if (temp==newArr[j]){
flag = true;
break;
}
}
if (flag==false){
newArr[index++] = temp;
}
}
return newArr;
}
}
运行结果:


浙公网安备 33010602011771号