权限修饰符,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;
}
}
运行结果:

 

posted @ 2022-01-26 23:03  柯基$  阅读(71)  评论(0)    收藏  举报