zoukankan      html  css  js  c++  java
  • java基础复习2-6

    if语句

      if else 结构 简写: 变量 = (条件表达式)?表达式1:表达式2;

      三元运算符:

        好处:可以简化if else代码。

        弊端:因为是一个运算符,所以运算完必须要有一个结果。

    switch语句

      if和switch语句很像。

      具体什么场景下,应用哪个语句呢?

      如果判断的具体数值不多,而是符合byte short int char这四种类型 。

      虽然两个语句都可以使用,建议使用switch语句。因为效率稍高。

      其他情况:对区间的判断,对结果为boolean类型判断,使用if,if的会用范围更广。  

    while 和 do while 区别

      while:先判断条件,只有条件满足才执行循环体。

      do while:先执行循环体,再判断条件,条件满足,再继续执行循环体。

      简单一句话:do while :无论条件是否满足,循环体至少执行一次。 

    for(初始化表达式;循环条件表达式;循环后的操作表达式){执行语句}

      例子:for(int x = 0;x<3;x++){System.out.println("x="+x);}

      1.变量有自己的作用域。对于for来讲:如果将用于控制循环的增量定义在for语句中,那么该变量只有在for语句内有  效。for语句执行完毕,该变量在内存中被释放。

      2.for和white可以进行互换,如果需要定义循环增量,用for更为合适。

      总结:

      什么时候使用循环结构:

      当要对某些语句执行很多次时,就使用循环结构。

      对于打印长方形,外循环控制的行数,内循环控制的是每一行的列数。

    函数

      1.既然函数是一个独立的功能,那么该功能的运算结果是什么先明确,因为这是在明确函数的返回值类型。

      2.在明确在定义该功能的过程中是否需要未知的内容参与运算,因为是在明确函数的参数列表(参数的类型和参数的  个数)。

    数组

      同一种类型数据的集合,数组是一个容器,可以自动给数组中的元素从0开始编号,方便操作。

      使用for循环来遍历数组,对数组进行操作,

      选择排序

      冒泡排序

      折半查抄的两种方式

      进制转换

      ps:其实这些到了后期会有封装好的,直接引用就好,java是面向需求的,需要什么找什么就好,copy,我是搬家小能手。

    数组

      一维数组int [] x; int x [];

      二维数组int [][] y; int y [][]; int [] y [];

    面向对象:三个特征:封装,继承,多态;

      以后开发:其实就是找对象使用,没有对象就自己建一个咯。找对象,建立对象,使用对象,维护对象的关系。

    类和对象的关系:类就是对现实生活中事物的描述,对象就是这类事物实实在在存在的个体。映射到java中,描述就是class定义的类,具体对象就是对应java在堆内存中用new建立实体。

    成员变量和局部变量:

      成员变量:作用于整个类中。在堆内存中,因为对象的存在,才在内存中存在。

      局部变量:作用于函数中,或者语句中。存在栈内存中。

    匿名对象

      封装:隐藏对象的属性和实现细节,紧对外提供公共的访问方式。set和get

      对象一建立就会调用与之对应的构造函数。

    构造函数的作用:可以用于给对象进行初始化。

      构造函数的小细节:当一个类中没有定义构造函数时,那么系统会默认给该类加入一个空参数的构造函数。

      当在类中自定义了构造函数时,默认的构造函数就没有了。

      构造函数和一般函数在写法上有不同。

      在运行上也有不同。

      构造函数是在对象一建立就运行。给对象初始化。

      而一般方法是对象调用才执行,给是对象添加对象具备的功能。

      一个对象的建立,构造函数只运行一次。而一般方法可以被该对象调用多次。

    什么时候定义构造函数呢?

      当分析事物时,该函数存在具备一些特性或者行为,那么将这些内容定义在构造函数中。

    构造代码块:

      作用:给对象进行初始化。

      对象一建立就运行,而且优先于构造函数执行。

    构造代码块和构造函数的区别:

      构造代码块是给所有的对象进行统一初始化,而构造函数是给对应的对象初始化。

      构造代码块中定义的是不同对象共性的初始化内容。

    this:是用于区分局部变量和成员变量同名的情况。

      this就代表本类的对象,到底代表哪一个呢?代表它所在函数所属对象的引用。简单说,哪个对象在调用this所在的函数,this就代表哪个对象。

    this应用:当定义类中的功能时,该函数内部要用到调用该函数的对象时,这时用this来表示这个对象,但凡本类功能内部使用了了本类对象,都用this表示。  

    this语句:用于构造函数之间进行互相调用。只能定义在构造函数的第一行,因为初始化要先执行。

    静态:static

      用法:是一个修饰符,用于修饰成员(成员变量,成员函数),当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调用。类名,静态成员。

    static特点:

      1.随着类的加载而加载。也就是说:静态会随着类的消失而消失,说明他的生命周期最长。

      2.优先于对象存在,明确一点:静态是先存在,对象是后存在的。

      3.被所有对象所共享。

      4.可以直接被类名所调用。

    实例变量和类变量的区别:

      1.存放位置。

        类变量随着类的加载而存在于方法区中。

        实例变量随着对象的建立而存在于堆内存中。

      2.生命周期:

        类变量生命周期最长,随着类的消失而消失。

        实例变量生命周期随着对象的消失而消失。

    静态使用注意事项:

      1.静态方法只能访问静态成员。

        非静态方法既可以访问静态也可以访问非静态。

      2.静态方法中不可以定义this,super关键字。

        因为静态优先于对象存在,所以静态方法中不可以出现this。

      3.主函数是静态的。

    主函数:是一个特殊的函数。作为程序的入口,可以被jvm调用。

    主函数的定义:

      public:代表着该函数访问权限是最大的。

      static:代表主函数随着类的加载就已经存在了。

      void:主函数没有具体的返回值。

      main:不是关键字,但是是一个特殊的单次,可以被jvm识别,

      (String【】arr):函数的参数,参数类型是一个数组,该数组中的元素是字符串。字符串类型的数组。

      主函数是固定格式的:jvm识别。

    为什么使用静态?

      两方面,因为静态修饰的内容有成员变量函数

    什么时候定义静态变量(类变量)呢?

      当对象中出现共享数据时,该数据被静态所修饰。

      对象中的特有数据要定义成非静态存在于堆内存中。

    什么时候定义静态函数呢?

      当功能内部没有访问到非静态数据(对象的特有数据),那么该功能可以定义成静态的。

    ps:每一个应用程序中都有共性的功能,可以将这些功能进行抽取,独立封装,以便复用。

    虽然可以通过建立ArrayTool的对象使用这些工具方法,对数组进行操作,发现了问题:

      1,对象是用于封装数据的,可是ArrayTool对象并未封装特有数据。

      2,操作数组的每一个方法都没有用到ArrayTool对象中的特有数据。

      这时就考虑,让程序更严谨,是不需要对象的,可以将ArrayTool中的方法都定义成static的,直接通过类名调用即可。

      将方法都静态后,可以方便于使用,但是该类还是可以被其他程序建立对象的,为了更为严谨,强制让该类不能建立对象,可以通过将构造函数私有化完成。

    Person p = new Person(“zhangsan”,20);

    该句话都做了什么事情?

      1.因为new用到了Person.class,所以会先找到Person.class文件并加载到内存中。

      2.执行该类中的static代码块,如果有的话,给Person.class类进行初始化。

      3.在堆内存中开辟空间,分配内存地址。

      4.在堆内存中建立对象的特有属性,并进行默认初始化。

      5.对属性进行显示初始化。

      6.对对象进行构造代码块初始化。

      7.对对象进行对应的构造函数初始化。

      8.将内存地址付给栈内存中的p变量。

    (雨,写于7月13日,广州,转载请标明出处,谢谢)

        

  • 相关阅读:
    398. Random Pick Index
    382. Linked List Random Node
    645. Set Mismatch
    174. Dungeon Game
    264. Ugly Number II
    115. Distinct Subsequences
    372. Super Pow
    LeetCode 242 有效的字母异位词
    LeetCode 78 子集
    LeetCode 404 左叶子之和
  • 原文地址:https://www.cnblogs.com/believeus/p/7158435.html
Copyright © 2011-2022 走看看