zoukankan      html  css  js  c++  java
  • Java基础(二)

    1、笔记

    1/*
        使用方法的时候,注意事项:
    
        1. 方法应该定义在类当中,但是不能在方法当中再定义方法。不能嵌套。 ----> Python 中的闭包、装饰器可以
        2. 方法定义的前后顺序无所谓。
        3. 方法定义之后不会执行,如果希望执行,一定要调用:单独调用、打印调用、赋值调用。
        4. 如果方法有返回值,那么必须写上“return 返回值;”,不能没有。
        5. return后面的返回值数据,必须和方法的返回值类型,对应起来。
        6. 对于一个void没有返回值的方法,不能写return后面的返回值,只能写return自己。
        7. 对于void方法当中最后一行的return可以省略不写。
        8. 一个方法当中可以有多个return语句,但是必须保证同时只有一个会被执行到,两个return不能连写。
         */
    
    2、方法的重载
        多个方法名称一样,但是参数列表不一样;
        Python中会被覆盖,而Java中都可以同时存在
        注意事项:
            方法重载与下列因素相关:
            1、参数个数不同;
            2、参数类型不同;
            3、多类型的顺序不用; ---> (int a, double b) 与 (double a, int b)不一样
            方法重载与下列因素无关:
            1、与参数名称无关;
            2、与方法的返回值类型无关;
    
    3、在调用输出语句的时候,println方法其实就是进行了多种数据类型的重载形式。(因为 println 可以打印任何内容,那么相当于有多个 println 方法,只是参数不同,用来接收各种各样的数据类型)
    
    4、数组的初始化:在内存当中创建一个数组,并且向其中赋予一些默认值。
    
    两种常见的初始化方式:
        1. 动态初始化(指定长度)
        2. 静态初始化(指定内容)
    
        动态初始化数组的格式:
        数据类型[] 数组名称 = new 数据类型[数组长度];
    
        静态初始化基本格式:
        数据类型[] 数组名称 = new 数据类型[] { 元素1, 元素2, ... };
    
        省略格式:
        数据类型[] 数组名称 = { 元素1, 元素2, ... };
    
    注意事项:
        1. 静态初始化没有直接指定长度,但是仍然会自动推算得到长度。
        2. 静态初始化标准格式可以拆分成为两个步骤。
        3. 动态初始化也可以拆分成为两个步骤。
        4. 静态初始化一旦使用省略格式,就不能拆分成为两个步骤了。
    
        使用建议:
        如果不确定数组当中的具体内容,用动态初始化;否则,已经确定了具体的内容,用静态初始化。
    
    5、直接打印数组名称,得到的是数组对应的:内存地址哈希值。
    
    6、
    使用动态初始化数组的时候,其中的元素将会自动拥有一个默认值。规则如下:
    如果是整数类型,那么默认为0;
    如果是浮点类型,那么默认为0.0;
    如果是字符类型,那么默认为'u0000';
    如果是布尔类型,那么默认为false;
    如果是引用类型,那么默认为null。
    
    注意事项:
    静态初始化其实也有默认值的过程,只不过系统自动马上将默认值替换成为了大括号当中的具体数值。
    
    7、Java内存需要划分为5个部分
        1、栈:存放的都是方法中的局部变量。方法的运行一定要在栈中运行。
        局部变量:方法的参数,或者是方法{}内部的变量
        作用域:一旦超出作用域,立刻从栈内存当中消失
        2、堆:凡是new出来的东西,都在堆当中。
        堆内存里面的东西都有一个地址值,16进制
        堆内存里面的数据,都有一个默认值,例如:
            如果是整数类型,那么默认为0;
            如果是浮点类型,那么默认为0.0;
            如果是字符类型,那么默认为'u0000';
            如果是布尔类型,那么默认为false;
            如果是引用类型,那么默认为null。
        3、方法区:储存.class相关信息,包含方法的信息。
        4、本地方法栈:与操作系统相关。
        5、寄存器:与CPU相关。
    
    8、所有的引用类型变量,都可以赋值为一个null值。但是代表其中什么都没有。
    
    9、
        一个方法可以有0、1、多个参数;但是只能有0或者1个返回值,不能有多个返回值。
        如果希望一个方法当中产生了多个结果数据进行返回,怎么办?
        解决方案:使用一个数组作为返回值类型即可。
    
        任何数据类型都能作为方法的参数类型,或者返回值类型。
    
        数组作为方法的参数,传递进去的其实是数组的地址值。
        数组作为方法的返回值,返回的其实也是数组的地址值。
    
    10、
        面向过程:当需要实现一个功能的时候,每一个具体的步骤都要亲力亲为,详细处理每一个细节。
        面向对象:当需要实现一个功能的时候,不关心具体的步骤,而是找一个已经具有该功能的人,来帮我做事儿。
    
    11、类:是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该类事物。
        对象:是一类事物的具体体现。对象是类的一个实例(对象并不是找个女朋友),必然具备该类事物的属性和行为。
    
    12、
    注意事项:
    1. 成员变量是直接定义在类当中的,在方法外边。
    2. 成员方法不要写static关键字。
    
    131. 导包:也就是指出需要使用的类,在什么位置。
        import 包名称.类名称;
        对于和当前类属于同一个包的情况,可以省略导包语句不写。
    
        2. 创建,格式:
        类名称 对象名 = new 类名称();
        Student stu = new Student();
    
        3. 使用,分为两种情况:
        使用成员变量:对象名.成员变量名
        使用成员方法:对象名.成员方法名(参数)
        (也就是,想用谁,就用对象名点儿谁。)
    
        注意事项:
        如果成员变量没有进行赋值,那么将会有一个默认值,规则和数组一样。
    
    14、局部变量和成员变量
        1. 定义的位置不一样【重点】
        局部变量:在方法的内部
        成员变量:在方法的外部,直接写在类当中
    
        2. 作用范围不一样【重点】
        局部变量:只有方法当中才可以使用,出了方法就不能再用
        成员变量:整个类全都可以通用。
    
        3. 默认值不一样【重点】
        局部变量:没有默认值,如果要想使用,必须手动进行赋值
        成员变量:如果没有赋值,会有默认值,规则和数组一样
    
        4. 内存的位置不一样(了解)
        局部变量:位于栈内存
        成员变量:位于堆内存
    
        5. 生命周期不一样(了解)
        局部变量:随着方法进栈而诞生,随着方法出栈而消失
        成员变量:随着对象创建而诞生,随着对象被垃圾回收而消失

    2、数组的长度属性(注意是属性不是方法)

    每个数组都具有长度,而且是固定的,Java中赋予了数组的一个属性,可以获取到数组的长度,语句为: 数组名.length ,属性length的执行结果是数组的长度,int类型结果。由次可以推断出,数组的最大索引值为 数组名.length-1 。

    3、数组的内存图

    4、一个对象的内存图

     

    注意:

    对象调用方法时,根据对象中方法标记(地址值),去类中寻找方法信息。这样哪怕是多个对象,方法信息
    只保存一份,节约内存空间。

  • 相关阅读:
    Java提高篇(三四)-----fail-fast机制
    opencv提取surf特征点出现的错误
    Android开发_Gson解析
    关于权限管理设计文章整理,希望对大家有所帮助
    URAL
    JAVA编程心得-多态设计初步
    paip. mysql如何临时 暂时 禁用 关闭 触发器
    Citrix服务器虚拟化之三十 XenApp 6.5发布流式应用程序
    在TextView使用部分颜色文字
    微软面试题:求整数随机数构成的数组中找到长度大于=3的最长的等差数列
  • 原文地址:https://www.cnblogs.com/linyuhong/p/10512065.html
Copyright © 2011-2022 走看看