Java笔记--基础
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笔记--基础的更多相关文章
- 《Java笔记——基础语法》
Java笔记--基础语法 一.字符串的拼接: 例如: System.out.println(""+""); 二.换行语句: 例如: Syst ...
- 《Java笔记——基础知识点》
Java笔记--基础知识点 位运算符操作的都是整型的数据. 位运算符是直接对整数的二进制进行计算. 整数不能进行逻辑运算. 运算符优先级别由高到低分别是:() > ! > 算术 ...
- Java笔记 - 基础语法简介
一.Java语言简介 JAVA是一种面向对象的程序设计语言,为不同级别的开发划分为J2SE.J2EE(Java Web).J2WE三种平台,可以进行桌面应用编程.WEB客户端编程.WEB服务器编程.手 ...
- 【代码笔记】Java常识性基础补充(一)——赋值运算符、逻辑运算符、三元运算符、Scanner类、键盘输入、Random类、随机数
为什么要进行Java常识性基础补充? 之前学习Java语言,学得很多很杂,而且是很多不同的方面插入讲解的,比如在跟班上课,自学java编程例子,java语法,过了很久,因为各种原因长时间不怎么写,有时 ...
- Java Script 学习笔记 -- 基础知识
Java script 概述 java Script 的简介 JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为 ...
- Effective Java笔记一 创建和销毁对象
Effective Java笔记一 创建和销毁对象 第1条 考虑用静态工厂方法代替构造器 第2条 遇到多个构造器参数时要考虑用构建器 第3条 用私有构造器或者枚举类型强化Singleton属性 第4条 ...
- [转]Java多线程干货系列—(一)Java多线程基础
Java多线程干货系列—(一)Java多线程基础 字数7618 阅读1875 评论21 喜欢86 前言 多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们 ...
- 关于JAVA面向对象基础整理以及个人的理解(适合初学者阅读)
JAVA的基础语法等都跟C有很大的相似之处,所以这里就不多啰嗦了.直接从数组开始. 数组: 1.声明 int [] a; 在声明的过程中,并没有分配空间给数组.我们可以在声明的同时,用new来分配相应 ...
- java必备基础知识(一)
学习的一点建议: 每一门语言的学习都要从基础知识开始,学习是一个过程,"万丈高楼平地起",没有一个好的地基,想必再豪华的高楼大厦终究有一天会倒塌.因此,我们学习知识也要打牢根基,厚 ...
随机推荐
- Chrome 打不开任意网页以及设置、扩展程序等页面解决方法
解决办法:在快捷键加启动参数 -no-sandbox,如果可以启动,就说明是电脑上有某个软件与Chrome沙盒有冲突
- 【协作式原创】查漏补缺之Golang中mutex源码实现(预备知识)
预备知识 CAS机制 1. 是什么 参考附录3 CAS 是项乐观锁技术,当多个线程尝试使用 CAS 同时更新同一个变量时,只有其中一个线程能更新变量的值,而其它线程都失败,失败的线程并不会被挂起,而是 ...
- 2019年mybatils面试高频题(java)
前前言 2019即将过去,伴随我们即将迎来的又是新的一年,过完春节,马上又要迎来新的金三银四面试季. 那么,作为程序猿的你,是否真的有所准备的呢,亦或是安于本职工作,继续做好手头上的事情. 当然,不论 ...
- Unity初步 基本拼图实现
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; ...
- Java源码-集合-ArrayList
基于JDK1.8.0_191 介绍 在Java中,对于数据的保存和使用有多种方式,主要的目的是以更少的资源消耗解决更多的问题,数组就是其中的一种,它的特点是所有的数据都保存在内存的一段连续空间中, ...
- 用instsrv.exe+srvany.exe将应用程序安装为windows服务
下载 链接:https://pan.baidu.com/s/1gKu_WwVo-TeWXmrGAr9qjw 提取码:s1vm 用instsrv.exe安装srvany.exe 将instsrv.exe ...
- 108、Java中String类之字符串文本替换
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- Write-up-Toppo
关于 下载地址:点我 哔哩哔哩:哔哩哔哩 信息收集 vmnet8网卡,IP:192.168.131.144,开放web,ssh服务 ➜ ~ ip a show dev vmnet8 5: vmnet8 ...
- Law of large numbers and Central limit theorem
大数定律 Law of large numbers (LLN) 虽然名字是 Law,但其实是严格证明过的 Theorem weak law of large number (Khinchin's la ...
- C# Show()与ShowDialog()的区别-----转载
A.WinForm中窗体显示 显示窗体可以有以下2种方法: Form.ShowDialog方法 (窗体显示为模式窗体) Form.Show方法 (窗体显示为无模式窗体) 两者具体区别如下: 1 ...