1、Java中内存的基本结构:

栈(stack):存放局部变量、对象的引用;

堆(heap):new出来的东西(对象)

方法区:常量池等

静态域:全局变量等

变量在其生命周期结束后将出栈,此时堆中的空间因为没有栈中的变量来引用它将被系统回收

2、Java中关于变量的类型:1)按照数据类型的不同:基本数据类型 & 引用数据类型

              2)按照声明位置的不同:成员变量 & 局部变量

3、成员变量与局部变量的区别:

--声明位置不同;

--成员变量的修饰符:public、private、protected、缺省

局部变量没有修饰符(与所在方法修饰符相同);

--局部变量必须要初始化后才能使用(无默认值)

成员变量若不初始化,则根据变量类型赋默认值;

--局部变量在内存中存在于栈空间中

成员变量存在于堆空间内(成员变量所在类的引用则存在于栈空间);

4、可变个数的形参

--举例:

 public void print(String ... args){
for(int i = 0; i < args.length; i++){
System.out.println(args[i]);
}
}

注:若方法中存在可变个数的形参,则必须将其声明在所有参数的最后;也就是说一个方法只能声明一个可变个数的形参。

个人理解:这个可变个数的参数与数组使用一致,因此在调用方法的时候也可以直接传入一个数组。

5、参数传递的机制:Java中的参数传递均为值传递。

个人理解:不管传递是的基本数据类型还是引用数据类型,调用方法时均将实参的值传递给形参,而不是将实参直接传递到方法中。

6、修饰类的的修饰符只有public或者缺省。

7、关于this关键字:注意1)this()必须写在构造器第一行;2)至少又一个构造器不使用this();

8、JavaBean:1)类型是公共的

        2)有一个无参的公共的构造器

        3)有属性,且有对应的get、set方法。

9、package:声明源文件所在包,写在程序的第一行。

10、import static ...:导入制定类的static的属性或方法。

11、Java只支持单继承。

12、多态性的前提:1)存在继承关系;2)子类中必须有对父类方法的重写。

个人理解:实例化父类的对象时,若new出来的是其子类,则只能调用子类中重写的方法而不能调用子类中其他方法。

13、对象a instanceof 类A 判断对象a是否是类A的一个实例,若是返回true,反之返回false。

注:若果为true,则对象a一定是A类的父类的实例。

14、子类对象的多态性不适用于属性,不适用于方法。

15、对于每一个基本数据类型,都有一个与其对应的包装类,由于在JDK5.0之后添加了装箱拆箱的特性,所以无需再通过包装类的各种方法来实现与基本数据类型的转换。

当让也可以使用方法来转换(如Integer integer = new Integer(5)、int i = integer.intValue().)。

16、static可以用来修饰属性、方法、代码块(或初始化块)、内部类。

17、static修饰的属性成为类变量,它不依赖于对象而存在,随着类的加载而加载(静态方法也如此)。与之对应的是实例变量,它只有在对象被创建之后才存在。

18、在静态方法内能够使用本类静态属性或方法,但不能调用非静态属性或方法。反之,非静态属性或方法可以调用静态属性或方法。

个人理解:静态属性或方法在类被加载时就被创建,而非静态属性或方法只有在类实例化对象后才被创建。而且静态属性或方法的生命周期也比非静态的长。

19、类的五个成员:属性,方法,构造器,代码块,内部类。

20、关于属性赋值的操作:1)默认初始化;2)显示初始化或代码块初始化(按顺序执行);3)构造器赋值;4)方法赋值。

21、final标记的类不能被继承;fianl标记的方法不能被子类重写;final标记的属性只能被初始化一次,此属性为一个常量,通常用大写字母命名。

常量不能使用默认初始化,可以显示的赋值,或在代码块、构造器中赋值。static final修饰的变量为全局常量。

22、抽象类:1)不能被实例化;2)有构造器,可供子类使用。3)抽象方法所在的类一定是抽象类。

一个类若继承于抽象类,则必须重写抽象类中的抽象方法。

23、通过多态性来创建的抽象类实例只能调用子类重写过的方法。

24、接口是抽象方法和常量值的定义的集合;接口是一种特俗的抽象类,只包含常量和方法的定义,而没有变量和方法的实现。

--一个类可以实现多个接口(因为Java是单继承的,所以接口可以实现多重继承的效果)。

--接口定义的是一种功能,此功能可以被所有类实现。

--接口没有构造器,所以不能实例化接口。

--接口可以继承其他接口,而且可以实现多继承。

25、接口与具体的实现类也存在多态性。

26、接口可以实现匿名类对象。例:OnClickListener ocl = new OnClickListener(){

                  void onClick(View v){}

                };

27、接口总结:1)通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系;

        2)通过接口可以指明多个类需要实现的方法,一般用于定义对象的扩张功能;

       3)接口主要用来定义规范。接触耦合关系。

28、内部类:

--分类:1)成员内部类(方法外);2)局部内部类(方法里)。

--内部类是外部类的一个成员,有修饰符(4个),可以用static final修饰,可以使用外部类的属性和方法。

--非静态类的内部类的实例化:先实例化一个外部类对象,再通过该对象调用内部类的构造器来实例化内部类。

Java笔记--基础的更多相关文章

  1. 《Java笔记——基础语法》

    Java笔记--基础语法       一.字符串的拼接: 例如: System.out.println(""+"");     二.换行语句: 例如: Syst ...

  2. 《Java笔记——基础知识点》

    Java笔记--基础知识点       位运算符操作的都是整型的数据. 位运算符是直接对整数的二进制进行计算. 整数不能进行逻辑运算. 运算符优先级别由高到低分别是:() > ! > 算术 ...

  3. Java笔记 - 基础语法简介

    一.Java语言简介 JAVA是一种面向对象的程序设计语言,为不同级别的开发划分为J2SE.J2EE(Java Web).J2WE三种平台,可以进行桌面应用编程.WEB客户端编程.WEB服务器编程.手 ...

  4. 【代码笔记】Java常识性基础补充(一)——赋值运算符、逻辑运算符、三元运算符、Scanner类、键盘输入、Random类、随机数

    为什么要进行Java常识性基础补充? 之前学习Java语言,学得很多很杂,而且是很多不同的方面插入讲解的,比如在跟班上课,自学java编程例子,java语法,过了很久,因为各种原因长时间不怎么写,有时 ...

  5. Java Script 学习笔记 -- 基础知识

    Java script 概述 java Script 的简介 JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为 ...

  6. Effective Java笔记一 创建和销毁对象

    Effective Java笔记一 创建和销毁对象 第1条 考虑用静态工厂方法代替构造器 第2条 遇到多个构造器参数时要考虑用构建器 第3条 用私有构造器或者枚举类型强化Singleton属性 第4条 ...

  7. [转]Java多线程干货系列—(一)Java多线程基础

    Java多线程干货系列—(一)Java多线程基础 字数7618 阅读1875 评论21 喜欢86 前言 多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们 ...

  8. 关于JAVA面向对象基础整理以及个人的理解(适合初学者阅读)

    JAVA的基础语法等都跟C有很大的相似之处,所以这里就不多啰嗦了.直接从数组开始. 数组: 1.声明 int [] a; 在声明的过程中,并没有分配空间给数组.我们可以在声明的同时,用new来分配相应 ...

  9. java必备基础知识(一)

    学习的一点建议: 每一门语言的学习都要从基础知识开始,学习是一个过程,"万丈高楼平地起",没有一个好的地基,想必再豪华的高楼大厦终究有一天会倒塌.因此,我们学习知识也要打牢根基,厚 ...

随机推荐

  1. ios中为视图添加圆角

    1.使用 layer设置指定圆角 或者设定一个或几个圆角 码修 关注 2017.04.20 19:03* 字数 107 阅读 656评论 0喜欢 0 由于项目中需要给按钮左下 和左上加圆角,我司可爱的 ...

  2. 小程序使用scroll-view横向滑动时,flex布局失效问题

    最近在完善以前项目,类目增多,需要进行横向滑动 实现方法1 可以在外盒子scroll-view使用white-space: nowrap来禁止子盒子换行,子盒子使用display: inline-bl ...

  3. DCL和DQL

    数据查询语言(DQL,Data Query Language) 主要是一些查询的sql语句. 语法 select * from test: 数据控制语言(DCL, Data Control Langu ...

  4. 两台W7系统的电脑,A电脑可以ping通B电脑,B电脑ping不通A电脑。

    https://zhidao.baidu.com/question/1946500242424659908.html 打开控制面板-系统和安全-防火墙-允许程序-文件和打印机共享(勾选) 局域网共享是 ...

  5. HDU 5564:Clarke and digits 收获颇多的矩阵快速幂 + 前缀和

    Clarke and digits  Accepts: 16  Submissions: 29  Time Limit: 5000/3000 MS (Java/Others)  Memory Limi ...

  6. CVPR 2019 行人检测新思路:

    CVPR 2019 行人检测新思路:高级语义特征检测取得精度新突破 原创: CV君 我爱计算机视觉 今天 点击我爱计算机视觉置顶或标星,更快获取CVML新技术 今天跟大家分享一篇昨天新出的CVPR 2 ...

  7. Linux命令:ping命令

    ping命令:类似于windows的ping命令,用于测试网络主机ICMP请求回应的 ping选项 ping -c  #             # 执行次数 -w #             #测试 ...

  8. Encoding.UTF8 与 new UTF8Encoding(false) 有什么区别?

    System.Text.Encoding.UTF8 是一个静态实例,它省略了 BOM,而 new UTF8Encoding(false) 创建的实例是含有 BOM 的. BOM,即 Byte Orde ...

  9. A way to find out how activity for mssql and oracle

    Dear buddy, Have you confuse that how activity about my databases, if we conside it by using backup ...

  10. FLASK - 请求和响应

    请求都封装在request对象里面了 from flask import Flask from flask import request from flask import render_templa ...