文档章节

JAVA学习笔记(二)

Mr_菜
 Mr_菜
发布于 2016/03/26 18:01
字数 1727
阅读 11
收藏 0


疑问:创建对象时,jvm就会调用到对应的构造方法,那么我们以前没有学构造方法,那么
以前创建对象时,jvm是否 也会调用构造方法呢?如果有?构造方法从何而来呢?
              

jdk提供了一个java开发工具(javap.exe)给我们进行反编译的。


javap 反编译工具的使用格式:
        
        javap -c -l -private 类名

疑问: java编译器添加 的无参构造方法的权限修饰符是 什么?
        与类的权限修饰是一致的。


构造函数与普通函数的区别:    
    1. 返回值类型的区别:
        1. 构造函数是没有返回值类型 的,
        2. 普通函数是有返回值类型的,即使函数没有返回值,返回值类型也要写上void。
    2. 函数名的区别:
        1. 构造函数的函数名必须要与类名一致,
        2. 普通函数的函数名只要符合标识符的命名规则即可。
    3. 调用方式的区别:
        1. 构造函数是 在创建对象的时候由jvm调用的。
        2. 普通函数是由我们使用对象调用的,一个对象可以对象多次普通 的函数,
    4. 作用上的区别:
        1. 构造函数 的作用用于初始化一个对象。

        2. 普通函数是用于描述一类事物的公共行为的。


构造代码块:
构造代码块的作用:给对象进行统一的初始化。
构造函数的作用: 给对应的对象进行初始化。
构造代码块的格式:
    
    {
        构造代码块
    }

注意: 构造代码块的大括号必须位于成员 位置上。


代码块的类别:
    1. 构造代码块。
    2. 局部代码块.   大括号位于方法之内。  作用:缩短局部 变量 的生命周期,节省一点点内存。
    3. 静态代码块  static
构造 代码块要注意的事项:
    1. java编译器编译一个java源文件的时候,会把成员变量的声明语句提前至一个类的最前端。
    2. 成员变量的初始化工作其实都在在构造函数中执行的。
    3. 一旦经过java编译器编译后,那么构造代码块的代码块就会被移动构造函数中执行,是在构造函数之前执行的,构造函数的中代码是最后执行 的。
    4. 成员变量的显示初始化与构造代码块 的代码是按照当前代码的顺序执行的。



this关键字:

this关键字代表了所属函数的调用者对象。
this关键字要注意事项:
    1. 存在同名的成员变量与局部变量时,在方法的内部访问的是局部变量(java 采取的是“就近原则”的机制访问的。)
    2. 如果在一个方法中访问了一个变量,该变量只存在成员变量的情况下,那么java编译器会在该变量的 前面添加this关键字。

this关键字调用其他的构造函数要注意的事项:
    1. this关键字调用其他的构造函数时,this关键字必须要位于构造函数中 的第一个语句。
    2. this关键字在构造函数中不能出现相互调用 的情况,因为是一个死循环。

static(静态\修饰符)

    1. static修饰成员变量 :如果有数据需要被共享给所有对象使用时,那么就可以使用static修饰。
        
        静态成员变量的访问方式:
                
                方式1: 可以使用对象进行访问。
                    格式: 对象.变量名。
                
                方式二: 可以使用类名进行访问。
                    格式: 类名.变量名;
    
            注意:
                1. 非静态的成员变量只能使用对象进行访问,不能使用类名进行访问。
                2. 千万不要为了方便访问数据而使用static修饰成员变量,只有成员变量的数据是真正需要被共享的时候
                才使用static修饰。
            
        static修饰成员变量的应用场景: 如果一个数据需要被所有对象共享使用的时候,这时候即可好实用static修饰。


静态的成员变量与非静态的成员变量的区别:
    1. 作用上的区别:
        1. 静态的成员变量的作用共享一个 数据给所有的对象使用。
        2. 非 静态的成员变量的作用是描述一类事物的公共属性。
    2. 数量与存储位置上的区别:
        1. 静态成员变量是存储方法 区内存中,而且只会存在一份数据。
        2. 非静态的成员变量是存储在堆内存中,有n个对象就有n份数据。
    3. 生命周期的区别:
        1. 静态的成员变量数据是随着类的加载而存在,随着类文件的消失而消失。
        2.非静态的成员数据是随着对象的创建而存在,随着 对象被垃圾回收器回收而消失。




静态函数要注意的事项:
    1. 静态函数是可以调用类名或者对象进行调用的,而非静态函数只能使用对象进行调用。
    2. 静态的函数可以直接访问静态的成员,但是不能直接访问非静态的成员。    
        原因:静态函数是可以使用类名直接调用的,这时候可能还没有存在对象,
        而非静态的 成员数据是随着对象 的存在而存在的。

    3. 非静态的函数是可以直接访问静态与非静态的成员。
        原因:非静态函数只能由对象调用,当对象存在的时候,静态数据老早就已经存在了,而非静态
        数据也随着对象的创建而存在了。

    4. 静态函数不能出现this或者super关键字。
        原因:因为静态的函数是可以使用类名调用的,一旦使用类名调用这时候不存在对象,而this
        关键字是代表了一个函数 的调用者对象,这时候产生了冲突。

静态的数据的生命周期:静态的成员变量数据是优先于对象存在的。


static什么时候修饰一个函数?
    
    如果一个函数没有直接访问到非静态的成员时,那么就可以使用static修饰了。 一般用于工具类型的方法
    

静态函数不能访问非静态的成员?
     静态函数只要存在有对象,那么也可以访问非 静态的数据。只是不能直接访问而已。


© 著作权归作者所有

Mr_菜
粉丝 1
博文 13
码字总数 8804
作品 0
西安
程序员
私信 提问
给大家分享一个JAVA技术大牛的课程笔记

目前,Java语言已经广泛应用于生活中的各个领域,无论是网络编程还是数据库编程,甚至是web开发都有Java语言的身影 很多小伙伴想学习java却布置从何学起,现在给大家分享一个JAVA大神课程笔记...

dadaxiaoxiao
2015/12/31
401
1
111 多线程JUC包下代码分析

Java多线程系列目录(共43篇) AtomicLongFieldUpdater:通过反射+CAS实现对传入对象的指定long字段实现类似AtomicLong的操作 http://www.cnblogs.com/skywang12345/p/javathreadscategory.ht...

素雷
2017/10/31
34
0
阿里P8架构师总结的互联网Java架构系统化学习路线

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/t4i2b10X4c22nF6A/article/details/83181980 网络应用,最常见的研发语言是Java的和PHP。 后端服务,最常见的...

JAVA高级架构v
2018/10/19
0
0
一份关于 Java、Kotlin 与 Android 的学习笔记

JavaKotlinAndroidLearn 这是一份关于 Java 、Kotlin 、Android 的学习笔记,既包含对基础知识点的介绍,也包含对一些重要知识点的源码解析,笔记的大纲如下所示: Java 重拾Java(0)-基础知...

叶应是叶
2018/08/08
0
0
BAT等大厂Android面试书单和知识点清单

java是Android开发的基础,在BAT的初面中,会涉及到比较多的java基础知识,所以比较重要,下面我介绍的书籍内容是由浅到深。 1.Thinking in java:这本书被称为Java的三大圣经之一,虽然书比...

android自学
2018/07/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

消息中间件——RabbitMQ的高级特性

前言 前面我们介绍了RabbitMQ的安装、各大消息中间件的对比、AMQP核心概念、管控台的使用、快速入门RabbitMQ。本章将介绍RabbitMQ的高级特性。分两篇(上/下)进行介绍。 消息如何保障100%的...

Java架构师ya七
52分钟前
8
0
如何编写高质量的 JS 函数(1) -- 敲山震虎篇

本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/7lCK9cHmunvYlbm7Xi7JxQ 作者:杨昆 一千个读者,有一千个哈姆雷特。 此系列文章将会从函数的执行机制、鲁棒性、函...

vivo互联网技术
今天
7
0
学会这5个Excel技巧,让你拒绝加班

在网上,随处都可以看到Excel技巧,估计已看腻了吧?但下面5个Excel技巧会让你相见恨晚。关键的是它们个个还很实用 图一 技巧1:快速删除边框 有时当我们处理数据需要去掉边框,按Ctrl+Shif...

干货趣分享
今天
11
0
JS基础-该如何理解原型、原型链?

JS的原型、原型链一直是比较难理解的内容,不少初学者甚至有一定经验的老鸟都不一定能完全说清楚,更多的"很可能"是一知半解,而这部分内容又是JS的核心内容,想要技术进阶的话肯定不能对这个...

OBKoro1
今天
11
0
高防CDN的出现是为了解决网站的哪些问题?

高防CDN是为了更好的服务网络而出现的,是通过高防DNS来实现的。高防CDN是通过智能化的系统判断来路,再反馈给用户,可以减轻用户使用过程的复杂程度。通过智能DNS解析,能让网站访问者连接到...

云漫网络Ruan
今天
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部