关于java基础知识,第三节,试用与java初学者

Lesson3

包的概念:包与系统目录层次相对应的,只是用反斜杆分割”/”.

Package bao

Public class test {

      Public static void main(String [] args){

      System.out.println(“fff”);

}

}

要求有一个包名的目录

执行方式为:java bao/test  java bao.test

Javac –d . test.java 可以自动生成目录.

Import  ava.io.file

Import  ava.io.*

导入其他类包,*是通配符,表示全部导入.

类的说明符 :

1.    public

2.    default(不加访问说明符时)

类的其他修饰符:

1.    final

2.    abstract抽象类

3.    同一包中的类互相访问,不用导入import,不通包必须导入.

Javac –d  x.java

Javac –d  y.java

如果编译的时候要注意顺序,如果x用到y,那么就要先编译y再编译x

如果怕麻烦,那就用javac –d  *.java来统配编译

包外的类如果想被别的包访问,必须声明成public(公共的),这样才能被别的包访问.

 

4.    final class 最终类,不能再派生子类,不能被继承.

5.    方法的说明符:

 

Public 公共

Protected保护

Default 默认

Private 私有

方法的其他修饰符:

static 静态的

final 最终不可改变

abstract抽象

native

synchronizde 同步方法

 

子类不想当抽象方法,就去实现父类的抽象方法,子类的实现的方法可以是空方法.

 

如果想设计一个类,找到这个类所有共性的,但是没有办法去了解这个类的个体里的方法体是什么样的,那么就可以设计成抽象类,比如做一个了人类,知道一些共性,但是无法了解每个人的名字和动作,就可以搞一个抽象的类,搞一些抽象的方法,然后通过子类继承来实现这些类.

1. class HelloWorld{

   public native void as();

   static {

              System.loadLibrary("aaaa");

        }

  

   public static void main(String [] args ){

        new HelloWorld().as();

   }

}

2.编译

3.创建*.h 头文件用javah命令

Javah – jni HelloWorld

4.写方法#include<jni.h>

#include"HelloWorld"

#include<stdio.h>

 

JNIEXPORT void JNICALL

Java_HelloWorld_as(JNIEnv *, jobject);

{

   printf("fsadfasd!/n");

   return;

}

郁闷了,机器没有配c的环境,,再议~

垃圾回收问题:

 java.lang.Obiect有一个方法finalize,当垃圾回收器启动的时候,改方法被调用.

java.lang.System.gc这个方法是强制执行垃圾回收器.

java感到内存不足的时候垃圾回收器才运行,所以可以用gc强制执行.

 

接口的运用:

Interface 接口的定义语句

接口实现用: implements

Interface Spotr{

      Void run();

      Void jump();

}

Class tim implements Spotr {

          

Void run(){

      System.out.println(“aa”);

};

      Void jump(){

      System.out.println(“bb”);

};

Public static void main(String [] args){

      Tim t=new  tim();

t.run();

t.jump();

}

}

接口里所有的方法都是public 和抽象的,所以要实现接口的方法体里的方法时,方法必须为public.

要实现了接口后的类可以被实例化,那么就要重写接口里的所有方法

接口中可以有数据成员,声明为:public static final

一个接口可以继承另外一个接口

Java不容许类多继承,但接口可以多继承

实现接口人,和调用接口人,比如显卡和主板之间的接口,有显卡厂商去实现接口的功能,然后主板厂商调用接口的功能,其实调用的是实现类的功能.

 

接口定义一些方法,这些方法没有方法体,方法体由实现的人来定义

实现接口的功能,就是实现接口的人来实现这个接口里所有的方法的方法体

调用接口的方法体,直接调用的是接口类,而不是实现接口的类,就是上边指向的这个类

实现

调用接口,不是调用实现

 

 

 

 

 

 

 

 


要调用接口:要把接口的实现传给接口,然后在调用接口,用实现里的方法.

 

接口 A  实现 B

C调用

B 实现 A

C调用 A{

Public void setcard(A a){  实现接口调用

                 This.a=a

}

B b=new B();

Setcard(b);  将接口的实现传给接口.

}

内部类

内部类可以访问外部所有成员,外部类可以控制内部类的可见性.

内部类和外部类可以有一样的方法名,因为内部类也可以直接拿到外部去定义.

内部类编译后的取名:

外部类名$内部类名.class

 

class  outer{

      class inner{

}

}

如果以类内部类被定义在一个方法里,那么这个内部类只能被这个方法来操作了.

通过outer.this.index来访问外部类的成员变量.

其他的类访问外部类的内部类,在外部类内定义方法:

Inner getinner(){

      Return new Inner;

}

其他类调用:

Outer.Inner  inner=new  Outer.getinner();

inner.print();

其他类访问内部类,先用外部类产生内部类对象,然后其他类才可以调用内部类

Outer.Inner  inner=Outer.new Inner();

静态方法不能调用非静态成员.

在一个方法中声明一个类,那么这个方法的参数和这个方法里的成员变量都要声明为final.(是需要在内部访问的时候才声明为final).

 

 

 

 

 

 

 

 

这个为类继承带内部类的方法,内部类用super实例化.

class car{

      class lun{

           void ce(){

      System.out.println("aaaa");

}

}

}

class pp extends car.lun{

      pp(car ca){

      ca.super();为了可以实例化内部类.

}

      public static void main (String [] args){

           car a=new car();

     pp x=new pp(a);

     x.ce();

  }

}

内部类实现接口:

interface Animal{

      void eat();

      void sleep();

}

class Zoo {

           class tiger implements Animal{

                 public void eat(){

                      System.out.println("eat");

                 }

                 public void sleep(){

                      System.out.println("sleep");

                 }

        }

        /*Animal getAnimal(){

        return new tiger();//通过接口的实现去实现接口

        }*/

        Animal getAnimal(){

        return new Animal(){//在这里直接实现接口

               public void eat(){

                            System.out.println("eat");

                      }

                      public void sleep(){

                            System.out.println("sleep");//这是匿名的内部类

                      }

            };

        }

       

}

class test{

      public static void main(String [] args){

           Zoo z=new Zoo();

           Animal an=z.getAnimal();

           an.eat();

           an.sleep();

      }

}

异常处理:

Try{异常代码}catch(Exception e){捕获后执行的代码}finally{肯定会执行的代码}

很简单,好像没有什么可说的.

看一下api的异常.

程序编写错误,水平问题,这类错误不需要捕获的.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值