Java基础部分知识点汇总

第一章 Java开发环境搭建

1、常用的DOS命令:
创建目录:mkdir
切换目录:cd
相对路径和绝对路径
cls 清屏
dir 列出当前目录下内容
exit 退出DOS命令窗口
del命令,删除一个或者多个文件
查看ip:ipconfig ping
2、文本编辑器常用快捷键:
复制 ctrl + c  粘贴 ctrl + v  剪切 ctrl + x
保存 ctrl + s  撤销 ctrl + z  重做 ctrl + y
回到行首:home键  回到行尾:end键
当光标在行尾,怎么选中一行? shift + home键
当光标在行首,怎么选中一行? shift + end键
回到文件头:ctrl + home  回到文件尾:ctrl + end
全选:ctrl + a  查找:ctrl + f
选中一个单词:鼠标双击  选中一行:鼠标连续击3次
不用鼠标选中一个单词:ctrl + shift + 右箭头/左箭头
3、Java语言概述:
Java体系的技术被划分为三大块:
JavaSE:标准版
JavaEE:企业版
JavaME:微型版
4、Java语言的特性:
简单性:Java语言屏蔽了指针概念,由JVM而不是程序员来操作内存,并且也只支持单继承
面向对象:Java中提供了封装、继承、多态等面向对象的机制。
健壮性:Java语言引入了自动垃圾回收机制(GC机制),无需程序员手动释放内存
多线程:Java语言支持多个线程同时并发执行,同时也提供了多线程环境下的安全机制。
可移植性/跨平台:JVM屏蔽了各操作系统之间的差异,实现了跨平台,使得Java程序可以只需要编写/编译一次,即可处处运行
5、JDK、JRE、JVM三者之间的关系
JDK:Java开发工具箱
JRE:java运行环境
JVM:java虚拟机
JDK包括JRE,JRE包括JVM。JVM是不能独立安装的。JRE和JDK都是可以独立安的。
6、Java的加载与执行
编译阶段:将Java源代码编译为字节码文件,javac 命令,负责编译:javac java源文件的路径
运行阶段:运行字节码文件,java 命令,负责运行:java 类名
classpath环境变量的作用:是给类加载器指路的
7、Java中注释:
单行注释://
多行注释:/* … */
文档注释:/** … */

第二章 标识符与关键字

1、标识符
命名规则:数字、字母、下划线、$组成;数字不能开头;区分大小写;不能使用关键字
命名规范:见名知意;驼峰命名法;类名接口名首字母大写后续单词首字母大写;方法名变量名首字母小写后续单词首字母大写;常量全部大写,单词之间下划线连接
2、关键字:全部小写

第三章 变量

1、变量的三要素:数据类型、变量名、值
2、变量的分类:局部变量和成员变量(实例变量和静态变量)
在方法体当中声明的变量叫做局部变量。
在方法体外以及类体内声明的变量叫做成员变量。
3、变量的作用域:出了大括号就不认识了

第四章 数据类型

1、基本数据类型:4大类8小种
在这里插入图片描述

2、引用数据类型:java中除了基本数据类型之外,剩下的都是引用数据类型。
3、Java采用的编码方式为Unicode编码
4、类型转换需要遵循的规则:
(1)八种基本数据类型中,除 boolean 类型不能转换,剩下七种类型之间都可以进行转换;
(2)如果整数型字面量没有超出 byte,short,char 的取值范围,可以直接将其赋值给byte,short,char 类型的变量;
(3)小容量向大容量转换称为自动类型转换,容量从小到大的排序为:
byte < short(char) < int < long < float < double,其中 short和 char 都占用两个字节,但是char 可以表示更大的正整数;
(4)大容量转换成小容量,称为强制类型转换,编写时必须添加“强制类型转换符”,但运行时可能出现精度损失,谨慎使用;
(5)byte,short,char 类型混合运算时,先各自转换成 int 类型再做运算;
(6)多种数据类型混合运算,各自先转换成容量最大的那一种再做运算;

第五章 运算符

1、算术运算符:+ - * / % ++ –
  ++i 先运算再赋值   i++ 先赋值再运算
2、关系运算符:> >= < <= == !=
3、逻辑运算符:& | ! && ||
  短路与 &&(左边为假右边不执行),短路或 ||(左边为真右边不执行)
4、赋值运算符:= += -= *= /= %=
  使用扩展赋值运算符的时候,永远都不会改变运算结果类型。
  如byte x = 100; x +=1 ;相当于x = (byte)x + 1
5、三目运算符:布尔表达式 ? 表达式1 : 表达式2在这里插入图片描述

第六章 控制结构

1、选择语句
if:
if(布尔表达式){
}else if(布尔表达式){
}else if(布尔表达式){
}else if(布尔表达式){
}else if(布尔表达式){
}else{
}
switch:
switch(值){ //值允许是String、int,(byte,short,char可以自动转换int)
case 值1: case 值x:
 java语句;
 break;
case 值2:
 java语句;
 break;
case 值3:
 java语句;
 break;
default:
 java语句;
}
2、循环语句
for:
for(初始化表达式;条件表达式;更新表达式){
 循环体;
}
while:
while(布尔表达式){
 循环体;
}
执行次数:0~N次。
do…while:
do{
 循环体;
}while(布尔表达式);
执行次数:1~N次。
3、转向语句
break;
continue;
return;

第七章 方法

1、方法的定义和调用
[修饰符列表] 返回值类型 方法名(形式参数列表){
 方法体;
}
2、方法形参和返回值
返回值类型可以是任何类型,如果返回值类型是void,那么在方法体当中不能有“return 值;”这样的语句。但是可以有“return;”语句。这个语句“return;”的作用就是用来终止当前方法的。
3、栈数据结构和方法执行过程中内存的变化
JVM的内存结构:方法区、堆内存、栈内存
栈中存储什么?方法运行过程中需要的内存,以及栈中会存储方法的局部变量。
4、方法重载的定义、优点以及条件
定义:方法重载(overload)是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数
优点:代码整齐美观,便于后期的代码编写(容易记忆,方便使用)
条件1:在同一个类当中
条件2:方法名相同
条件3:参数列表不同(参数个数、顺序、类型)
5、方法递归
方法自己调用自己,这就是方法递归。
使用递归的时候,必须添加结束条件,没有结束条件,会发生栈内存溢出错误。
方法执行过程中内存的变化
在这里插入图片描述

第八章 认识面向对象

1、面向过程和面向对象的区别
面向过程主要关注的是:实现步骤以及整个过程。 优点:快速开发 缺点:耦合性强,扩展性差
面向对象主要关注的是:对象A,对象B,对象C,然后对象ABC组合,或者CBA组合… 优点:耦合度低,扩展力强。
OOA(面向对象分析)、OOD(面向对象设计)、OOP(面向对象编程)
2、面向对象三大特征:封装、继承、多态
3、类和对象的概念
类就是一个模板:类中描述的是所有对象的“共同特征信息”
对象就是通过类创建出的个体。
类、对象、实例、实例化、抽象
4、类的定义和对象的创建
[修饰符列表] class 类名 {
 //类体 = 属性 + 方法
 // 属性在代码上以“变量”的形式存在(描述状态)
  // 方法描述动作/行为
}
对象的创建:类名 变量名 = new 类名();
实例变量实际上就是:对象级别的变量。
对象和引用的区别:电视和遥控器

第九章 对象的创建和使用

1、对象的创建和使用:类名 变量名 = new 类名();
2、空指针异常和垃圾回收器GC
空指针异常:空引用 访问 "对象相关"的数据时,会出现空指针异常。
垃圾回收器GC:垃圾回收器主要针对的是堆内存。当一个java对象没有任何引用指向该对象的时候,GC会考虑将该垃圾数据释放回收掉。
3、构造方法的作用、定义和调用、缺省构造器
作用:构造方法是用来创建对象,并且同时给对象的属性赋值(实例变量初始化)。
构造方法定义:
[修饰符列表] 构造方法名(形式参数列表){
 构造方法体;
 通常在构造方法体当中给属性赋值,完成属性的初始化。
}
构造方法调用:new 构造方法名(实际参数列表);
缺省构造器:当一个类没有提供任何构造方法,系统会默认提供一个无参数的构造方法。
当一个类中手动的提供了构造方法,那么系统将不再默认提供无参数构造方法。建议将无参数构造方法手动的写出来
实例变量没有手动赋值的时候,系统会赋默认值
在这里插入图片描述

第十章 封装

1、封装的定义:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
2、封装的好处
(1)隐藏实现细节,提供公共访问方式,便于使用者调用
(2)提高了安全性
(3)降低耦合度,增强扩展性,提高了代码的复用性(封装可以实现对类进行内部修改,而不会影响调用该类的任何代码,降低了耦合度)
3、封装的方法:属性私有,方法公开
属性私有化(使用private关键字进行修饰。)
对外提供对应的getter/setter方法,并在getter/setter方法中对属性值的合法性进行判断

第十一章 this和static

1、this的定义,this如何使用在实例方法和构造方法中
1.1、this是一个关键字,是一个引用,保存对象内存地址指向自身,存在于堆内存中对象内部
1.2、this可以使用在实例方法中,也可以使用在构造方法中。
1.3、this出现在实例方法中其实代表的是当前对象。
1.4、this不能使用在静态方法中。
1.5、this. 大部分情况下可以省略,但是用来区分局部变量和实例变量的时候不能省略。
1.6、this() 这种语法只能出现在构造方法第一行,表示当前构造方法调用本类其他的构造方法,目的是代码复用。
参考例子:
public Date(){
 this(1970, 1, 1);
}
public Date(int year, int month, int day){
 this.year = year;
 this.month = month;
 this.day = day;
}

引申出的思考:this使用在构造方法中调用多个构造方法会创建几个对象—>构造方法的作用是在创建对象时执行初始化,构造方法本身并不创建对象,创建对象应该由new这个关键字来实现。因此构造方法中使用this也只是调用有参构造方法对实例变量执行初始化,并不会多创建一个对象。
2、static的含义,静态变量、静态方法、静态代码块
2.1 所有static修饰的,不需要创建对象,都是采用“类名.”的方式访问。即使使用“引用”去访问,在运行的时候也和堆内存当中的对象无关
2.2 局部变量存储在栈内存中;实例变量,存储在堆内存中,构造方法执行过程中初始化;静态变量,存储在方法区,类加载时初始化
2.3 static修饰的变量:静态变量
2.4 static修饰的方法:静态方法
2.5 静态代码块:静态代码块在类加载时执行,并且在main方法执行之前执行,只执行一次
类体{
  static {
     java语句;
     java语句;
  }
}
2.6 实例代码块:只要是构造方法执行,必然在构造方法执行之前,自动执行“实例语句块”中的代码。
类体{
  {
  java语句;
  java语句;
  java语句;
  }
}

到目前为止一个类当中可以出现的:
类体{
  实例变量;
  实例方法;

  静态变量;
  静态方法;

  构造方法;

  静态代码块;
  实例语句块;

  方法(){
     // 局部变量
     int i = 100;
   }
}

第十二章 继承

1、继承的作用:
基本作用:代码复用
重要作用:实现方法重写和多态机制
2、继承的相关特性:
extends关键字、只支持单继承
构造方法和私有属性不能被继承、私有方法无法被重写,但可以通过子类继承父类的方法来访问父类的私有属性
默认继承Object类
缺点:父子类之间耦合性高

第十三章 方法覆盖和多态

1、方法覆盖(override)的定义和条件以及注意事项
第一:有继承关系的两个类
第二:具有相同方法名、返回值类型、形式参数列表
第三:访问权限不能更低。
第四:抛出异常不能更多。
注意事项:
私有的方法不能被继承,所以不能被覆盖
构造方法不能被继承,所以也不能被覆盖
方法覆盖只是和方法有关,和属性无关
静态方法不存在覆盖(不是静态方法不能覆盖,是静态方法覆盖意义不大,学习了多态机制之后就明白了)
2、方法重载和方法覆盖的区别
方法重载发生在同一个类当中。方法覆盖是发生在具有继承关系的父子类之间。
方法重载是一个类中,方法名相同,参数列表不同(对返回值类型没有要求)。方法覆盖是具有继承关系的父子类,并且重写之后的方法必须和之前的方法一致:方法名一致、参数列表一致、返回值类型一致。
3、向上转型和向下转型
向上转型:子类型—>父类型 (upcasting) 自动转换
向下转型:父类型—>子类型 (downcasting) 强制转换
不管是向上转型还是向下转型,他们之间必须有继承关系,否则编译器会报错。
在进行任何向下转型的操作之前,要使用instanceof进行判断
4、多态的定义和构成条件、作用
多态是同一个行为具有多个不同表现形式或形态的能力,即“同一个行为(move)”作用在“不同的对象上”会有不同的表现结果
多态存在的三个必要条件分别是:
① 继承
② 方法覆盖
③ 父类型引用指向子类型对象
作用:面向抽象编程,降低程序的耦合度,提高程序的扩展力,符合OCP开发原则(开闭原则:软件实体应当对扩展开放,对修改关闭)

第十四章 super

1、super的概念,和this的区别
super其实并不是一个引用,它只是一个关键字,super代表了当前对象中从父类继承过来的那部分特征
this是一个关键字,是一个引用,保存内存地址指向自身,存在于堆内存中对象内部
2、super在构造方法中的使用:super(实际参数列表)
作用:调用父类的构造方法,使用这个构造方法来给当前子类对象初始化父类型特征;代码复用
默认调用父类中的无参数构造方法,即默认为super()
3、super在实例方法中的使用:访问父类中属性或方法
“this”大部分情况下都是可以省略的,只有在方法中区分局部变量和实例变量的时候不能省略
父类和子类中有同名属性,或者说有同样的方法,想在子类中访问父类的,super. 不能省略。
4、super的使用:
super.属性名     【访问父类的属性】
super.方法名(实参)  【访问父类的方法】
super(实参)     【调用父类的构造方法】

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值