zoukankan      html  css  js  c++  java
  • java基础

    JAVA基础:(个人理解,刚开始学,有错误麻烦大家纠正,谢谢.)

    1、修饰符 class  类名

    {

      //Do  something;  

    }  

    public static void main(String[] args){

      这属于函数入口

    }

    2、数组:int  x[] = new int[100];

    3、成员变量、局部变量

    4、get/set  实现类似属性访问

    public class Person{

    private int age;

      public int getArea(){

      return age;

      }

      public void setArea(int i){

      this.age = age;

      }

    }

    5、类的初始化

      Person p1=new Person();

      new Person().getArea();

    6、构造函数

      一般应用是对于初始化赋值

      在Java中至少又一个构造方法,我们没有写,系统会自动产生一个默认构造方法

      在构造方法里不含返回值概念是不同void的,对public void Per son( ) 这样的法就不再是构造方法,而变成普通方法,人都会犯这样的错误,在

    定义构造方法void,果这个方法就不再被自动。 

      对构造方法进行重载:

      class Person{

      public Person(){

      System.out.println("构造方法");

      }

      public Person(String n){

      name = n;

      System.out.println("构造方法重载");

      System.out.println("name="+name);

      }

      public Person(String n,int m){

      name = n;

      age = m;

      System.out.println("构造方法重载");

      System.out.println("name ="+ n+"age ="+m);

      }

      public void shout(){

      System.out.println("打印方法");

      }

    }

    //调用class 

    class TestPerson{

      public static void main(String[] args){

        Person p1 =new Person();

        p1.shout();

        Person p2 =new Person("Jack");

        p2.shout();

      }

    }

       构造方法的重载的作用是可以根据传入参数不同,对对象进行不同的初始化;

      ps:构造函数一般都是用public修饰,不能用private,因为它们在对象产生时会被系统自动调用。

    7、this引用句柄,

      1)其实就是对本类中,各个方法之间要调用其中一个方法的时候用this来指定。

      2)还有就是在外部参数传入的参数名和成员变量名相同的时候,必须用this来指定成员变量名以示区分,例如:this.name = name;

      3) 另外一种,假设我们有一个容器类和一个部件类,在容器类的某个方法中要创建部件类的实例对象,而部件类的构造方法要接收一个代表其所在容器的参数,程序代码如下: 

      class Cintainer{

      Component comp;
      public void addComponent() {

      comp = new Component(this);//this为对象传递 }

      class Component{

      Container myContainer; public Component(Container c) {

      myContainer = c;


     4)
    构造方法是在产生对象时被Java系统自动调用的,我们不能在程序中象调用其他方法 一样去调用构造方法。但我们可以在一个构造方法里调用其他重载的构造方法,不是用构造方 法名,而是用 t hi s( 参数列表) 的形式,根据其中的参数列表,选择相应的构造方法 
      

    public class Person {

      String name;
      int age;
      public Person(String name) {

      this.name = name;

      }

      public Person(String name,int age)

      {

      this(name);

      this.age = age;

      }

    public void finalize()作用是当对象被当成垃圾从内存中释放前调用,而不是变成垃圾前调用。finalize()不是完全可靠地每次都会调用。
    析构函数是在对象即将消亡之前调用的方法,那么结合前面的构造函数:我们就可以提前对对象的产生和消亡过程进行一些控制。但要知道的是:
    无论是构造方法被调用,还是析构方法被调用,对象都在内存中存在。
    8、在有些情况下,我们需要自行通知系统进行垃圾回收时,这个时候我们就需要调用System.gc()方法强制启动垃圾回收

    9、static关键字,以及静态方法,静态代码块
    修饰成员变量的时候,在引用它的时候不需要为该类去创建对象,它会一直保留在内存当然,知道程序结束
    修饰方法的时候,我们可以用类名来访问方法,而不需要为该类创建对象

      在使,我意以下:
      
    1) 用同类中成员(包括变和方),而不访问 

    类中的非成员。这是为,对的方,要先创建对象后才使
    用,而使用前不用创建任何对象。
    

      2) . 任何方式t hi s super 键字与 上面的道理一样,使用前不用创建任何实对象,法被调,t hi s 所引用的对象没有产生

      3) . main() 的,JVMmain 创建 main 在的对象,而在 main() ,我访问该类中的非成员,必须创建该类的一个对象,过这个对象访问类中的非成员,这情况,我在以会多。 

    另外就是静态代码块:

      一个类中可以使用不任何态代(static block ),当类, 态代,,经常用来进行类属性初始。 

    10、单态模式(IOS中的单例):

      所谓类的单式,就是的方个的,对在一个对象,该类一个对象的方。 例如:

      public class Single

      {

        private static final Single onlyOne = new Single();

        public static Single getSingle(){

          return onlyOne;

        }

        private Single(0{}

      }

    11、内部类,应用非常多,可以使程序更具模块化,编写更容易,只需要记住内部类可以访问外部类成员,但是反过来就不成立,内部类只有在它的内部类范围之内是可知的,不被外部类使用。

    class Outer {

    int outer_i = 100; 

      void test() {

        Inner in = new Inner();

              in.display();
           }
    

        class Inner {

              void display()
              {
    

        System.out.println("display: outer_i = " + outer_i); }

      } }

    class InnerClassDemo {

        public static void main(String[] args) {

        Outer outer = new Outer();

              outer.test();
           }
    

      当需要从外部类之外被调用,只要将内部类用public进行修饰;

      ps:方法中也能定义内部类,不只是可以在类中定义;在方法中定义的内部类只能访问方法中的 f i nal 类型的局部变量,因为用 f i nal 定义的局 部变量相当于是一个常量,它的生命周期超出方法运行的生命周期。 

      

    class InOut {

        String str= new String("Between"); public void amethod(final int iArgs) {

        int it315; class Bicycle {

        public void sayHello() {

          System.out.println(str); System.out.println(iArgs);

            }//End of bicycle class }

      }//End of amethod }

    在内类中sayHel l o ,我可以访问变i Ar gs st r ,但不访问 i t 315。 

    12、类的继承,Java只支持单继承,不允许多重继承,亦是一个子类只能有一个父类,不允许一个类直接继承多个类;

      但是可以多层继承

      class A{}

      class B extends A{}

      class C extends B{}

      子类继承所有员变量方法,继承类的造方法。在类的造方

    法中可使用语句super() 类的造方法。:我们为Student增加一个造 方法,在这个造方法中我们用 super 明确类的造方法。

      class Student extends Person {}

      public Student(String name,int age,String school) {

      super(name,age);

      this.school=school;

      } 

      如果子类的造方法中显式地调造方法,使用 t hi s 关键字用重 其它造方法,生子类的实对象时,系统默认调无参造方法。 

      在类的继承中,子类也同样可以覆盖父类的方法,若想调用父类方法,可以使用super.method();

    13、  final关键字

      在 Java 中声明类、属性和方法时,可使用关键字 f i nal 来修饰。

      f i nal 标记的类继承。
      
    f i nal 标记的方法类重
      
    f i nal 标记变量( 员变量局部变量) 为常,赋值次,也只能在定义时赋值

    14、abstract (修饰抽象类)

      抽象类必须用 abstract 关键字来修饰;

      抽象方法也必须用 abstract 来修饰。

      抽象类不能被实例化,也就是不能用 new关键字去产生对象。

      抽象方法只需声明,而不需实现。

      含有抽象方法的类必须被声明为抽象类,抽象类的子类必须覆盖所有的抽象方法后才能被实例化,否则这个子类还是个抽象类。 

      抽象方法的写法:
      
    abstract 返回型 抽象方法( );

      抽象类和抽象方法的例子:
    
        abstract class A
        {
    

      abstract int aa(int x,int y);
      } 注意:含有抽象方法的类肯定是抽象类,抽象类中的某个方法不一定是抽象的。 

     

    15、interface(接口)

      interface,接是一象类,这象类中只包含和方法的定义,而变量和方法的实

      public interface Runner{

        int iD = 1;

        void run();

      } 

      我们可以用extends关键字去继承一个已有的接口,也可以定义一个类用implements关键字去实现一个借口中的所有方法,

      还可以去定义一个抽象类用implements关键字去实现一个接口中定义的部分方法;

      interface  Animal extends Runner{

        void breathe();

      }//是一个接口,对Runner进行扩展

      class Fish implements Animal{

        public void run()

        {

          System.out.println("fish is swimming !");

        }

        public void breathe(){

          System.out.prinln("fish is bubbling !");

        }

      }//是一个类,具有animal接口中所有的方法,必须实现这些方法;

      abstract LandAnimal implements Animal{

        public void breathe(){

        System.out.prinln("LandAnimal is breathing");

      }

      }//是抽象类,但没有实现Run方法,Run在LandAnimal就成了一个抽象方法,LandAnimal就是抽象类;

      interface的目的就是达到多重继承的目的。一个类可以在继承一个父类的同时,实现一个或多个接口,extends关键字必须位于implenments关键字之前;例如:

      class Student extends Person implements Runner{};

      PS:

      实现一个接口就是要实现该接口的所有方法(抽象类除外)。

       接口中的方法都是抽象的。

      多个无关的类可以实现同一个接口,一个类可以实现多个无关的接口。 

    16、对象的类型转换

      用instanceof 可以判断某个类实现了某个接口,也可以判断一个实例对象是否属于一个类

      

      public static void CallA(A a) {

        if(a instanceof B) {

              B b=(B)a;
              b.func1();
              b.func2();
              b.func3();
    

        } else {

        a.func1();

        a.func2();

        }

      } 

      instanceof 的用法:

      对象 instanceof (或)

      它返回布尔的,(t r ue),(f al se)。 

    17、异常处理(try...catch)、throws

       try

      {

        /*代码块*/

      }

      catch(Exception e){

      System.out.println("抛出异常");

      }

      throws,当某一个类用throws修饰的时候,另外一个类实例化它的时候就必须做出异常处理。

      

  • 相关阅读:
    Ubuntu18.04安装RTX2080Ti+NVIDIA驱动+CUDA
    G++ 编译多个源文件
    线段树【递归版本】
    Linux 安装 python 指定版本--编译源码方式
    正则表达式高级替换
    【转载】Git忽略规则和.gitignore规则不生效的解决办法
    一次“惊险”的系统修复过程
    YOLO模型对图片中车辆的识别比对
    YOLOv3模型识别车位图片的测试报告(节选)
    在windows下用python调用darknet的yolo接口
  • 原文地址:https://www.cnblogs.com/bu779783251/p/3324036.html
Copyright © 2011-2022 走看看