zoukankan      html  css  js  c++  java
  • Java捡漏

    print()和printf()方法输出的参数只能带有一个基本数据类型,若要输出多个数据,则应合成一个数据;

    %m.nf:输出浮点型占m位,小数点后保留n位数字;

    求余运算符号取决于第一位操作数的符号,而不管第二位操作数的符号。

    >>与>>>的区别:

    (以下所提到的数值的高位是指将整数转换为二进制数的补码时的左边第一位)

    >>右移后,留出来的位置用原来数值的高位来补。

    >>>右移后,留出来的位置用0来补。

    所以当原来的数值是一个正数时,无论是>>还是>>>,都是用0来补,两者的结果没有区别。只有当原来

    的数值为负数时,才出现区别。

    关于数组的声明

    int []a,b;  //a,b都是一维数组

    int a[],b; //a是一维数组,b是整数

    int a[][],b //a是一个二维数组,b是一个整数

    int []a[],b  //a是一个二维数组,b是一个一维数组

    int [][]a,b //a,b都是二维数组

    a.length是二维数组的行数, a[i].length是二维数组第i行的元素个数

    字符串的长度->s.length()

    访问权限只是在类体之外对域或方法访问的限制,在类体内,任何一个方法都可以直接访问本类

    中其他的域或方法,没有限制。

    ***************************//分割线

    成员变量->类中定义的,若没有初始化,则有自动的初始值“0”,布尔值为false,对象变量null,ect。new时即赋值(定义初始化),然后执行构造函数(如果有的话,无返回类型,连void也不行);

    题外话:构造函数(构造方法)可以设置参数,只需要在new的时候传递相应的数据类型

    对不同的构造函数进行选择->重载

    特殊用法:在其他构造函数中的第一句(仅一次)出现this();,则可以在其他的构造函数中调用没有参数的构造函数

    本地变量->函数中定义的,不初始化不可以使用;

    访问属性

    private->(只能作用于成员变量和成员函数)只能在这个类的内部访问,是针对类不是对象,即这个类的不同对象,在这个类的内部可以互相使用,在不同类中不能使用别的类的private成员变量。

    public->任何类可访问(当public修饰一个类时,表明任何人能用这个类来定义对象,此时类名和.java的文件名必须相同,该java文件也叫编译单元,在一个编译单元中只能有一个类被public修饰)

    无->(friendly)位于同一个包中的类可以访问

    protected

    static:(static的函数只能调用static函数,只能访问static修饰的成员变量)

    用static修饰的“成员变量”其实是类变量,并不是真正的成员变量,它属于所在的类,不属于任何一个对象,对象们只是拥有这仅有一个的类变量。可以通过类.变量名/对象.变量名进行访问或修改,在类的装载时只被初始化一次

    用static修饰的函数也是如此,该函数属于所在的类,称为类函数,和对象没关系->类函数中没有this

    范型类

    容器类-> 

         ArrayList<String> notes = new ArrayList<String>();   其中,ArrayList 是容器的类型,String是元素的类型。容器中放的是对象的内容,而不是对象的引用。

    题外话:String类型的变量只是对象的管理者,String类型的数组同理,即对象数组中的每个元素都是对象的管理者而非对象本身。for each循环可以对对象数组里的元素进行操作

        HashSet<String> s= new HashSet<String>();  其中,Set即数学中的集合,其中没有重复的元素,与存入顺序无关,因此也无法使用get()函数来获取某个位置上的元素。

        以上两类都可以通过System.out.println(notes/s);  得到容器中的每一个元素。原因:ArrayList类和HashSet类内部都有一个toString函数,输出时会自动调用该函数,从而输出相应的内容。

    Hash表: (键值对中的键是唯一的,若放入表中有相同的键,则只会留下最后一次放入的键值对)

    for example:  HashMap<Integer,String> s = new HashMap<Integer,String>(); ,其中里面存放键值的数据类型必须是对象,因此不能用基础数据类型,HashMap类中同样有toString函数。

    题外话:包装类型的变量可以直接接收其对应的基础数据类型

    继承与父类和子类

    把用来做基础,派生其它类的那个类叫做父类、超类或者基类,而派生出来的新类叫做子类。子类的对象可以被看作是父类的对象。Java的继承只允许单继承,即一个类只能有一个父类。

    super();存在或不存在,都会调用父类没有参数的构造器。   若super()中存在参数,则会在父类中调用相应的构造方法。因为初始化子类前必须先初始化父类,所以super()必须在构造函数的第一行,且只能调用一次。

    若子类和父类中有同名的函数fun(),则在子类中调用父类的函数时可以用super.fun();

    子类的对象可以赋值给父类,for example:  Vehicle v = new Car();,其中,前者为父类,后者为子类

    子类的对象可以传递给需要父类对象的函数

    子类的对象可以放在父类对象的容器里

    每一个JAVA对象变量都具有两个类型:静态类型(声明类型)和动态类型(声明类型的子类的对象)   ->  多态变量       子类的对象赋值给父类的变量->向上造型(安全的),而子类的变量不能接受父类的对象

    造型(cast):类没有被改变,而是被当作另外一个类型来看待,与类型转换的本质不同

    重要的编程理念:数据与表现分离,责任驱动的设计,面向接口的编程方式(设计程序先定义接口,再实现类)

    接口(interface):完全抽象的类(表达的是概念/规范),接口所有的方法都是没有方法体的,而且都是public abstract,即使你没有这样声明。而接口中的所有成员变量都是public static final的变量(属于该类,不属于对象的常量),并且必须有定义初始化,因为所有变量都必须在编译的时候有确定值。当类从接口得到继承的时候,Java用另外一个动词:实现(implements)。当然,实现接口的类必须覆盖接口中所有的方法,否则这个类就成为一个抽象类。Java不允许多继承,但是允许一个类实现多个接口,也允许一个接口从多个接口得到继承,但是接口不能实现接口,也不允许接口从类继承。

    内部类:指一个类定义在另一个类的内部,从而成为外部类的一个成员。因此一个类中可以有成员变量、方法,还可以有内部类。实际上Java的内部类可以被称为成员类,内部类实际上是它所在类的成员。所以内部类也就具有和成员变量、成员方法相同的性质。比如,成员方法可以访问私有变量,那么成员类也可以访问私有变量了。也就是说,成员类中的成员方法都可以访问成员类所在类的私有变量。内部类最重要的特点就是能够访问外部类的所有成员。

    匿名类:在new对象的时候给出的类的定义形成了匿名类。匿名类可以继承某类,也可以实现某接口,Swing的消息机制广泛使用匿名类

    内部类:定义在别的类内部/函数内部的类。内部类能直接访问外部的全部资源,包括任何私有的成员;外部是函数时,只能访问那个函数里final的变量

    JTable类:用JTable类可以以表格的形式显示和编辑数据,JTable类的对象并不存储数据,它只是数据的表现

    MVC设计模式:数据,表现和控制三者分离,各负其责。

    M(Model模型),保存和维护数据,提供接口让外部修改数据。

    V(View表现),从模型获得数据,根据数据画出表现

    C(Control控制),从用户得到输入,根据输入调整数据

    control不直接和view打交道

  • 相关阅读:
    学习 iOS多线程开发 Demo示意
    python(数字Number)
    python(元组)
    python(列表)
    python(一)
    APP自动化测试框架搭建(转载)
    Appium真机运行Device Name获取方法
    关于android sdk manager在下载包时没有android intel x86 atom system image等项
    adb shell命令查看当前与用户交互的activity
    SDK更新
  • 原文地址:https://www.cnblogs.com/cellphone7/p/7342735.html
Copyright © 2011-2022 走看看