数组


数组是数据的集合,一个容器,用来存储任何类型的数据,包括原始数据类型和引用数据类型,但是一旦指定了数组的类型之后,就只能用来存储指定类型的数据。

数组声明的三种方式:

  • 数据类型[] 数组名 = new 数据类型[长度];

  • 数据类型[] 数组名 = {数据,数据,…,数据};

  • 数据类型[] 数组名 = new 数据类型长度[] {数据,数据,…,数据};

一维数组:

  • 数组变量的声明:

语法:数据类型[] 数组名;,如:int[] num;double[] d;String[] str;

  • 数组对象的创建:

语法:数组名 = new 数据类型[长度];,如:num = new int[4];,数组声明其长度后不可改变

  • 赋值:

语法:数组名[下标] = 数据;,如:num[0] = 3;

  • 数组元素的使用及遍历:

语法:数组名[下标],获取指定下标是数据。

二维数组:

  • 数组变量的声明:

语法:数据类型[][] 数组名;,如:int[][] num;double[][] d;String[][] str;

  • 数组对象的创建:

语法:数组名 = new 数据类型[外长度][内长度];,如:num = new int[4][3];,数组声明其长度后不可改变

  • 赋值:

语法:数组名[外下标][内下标] = 数据;,如:num[0][0]= 3;

  • 数组元素的使用及遍历:

语法:数组名[外下标][内下标],获取指定下标是数据。


对象与类


对象:客观存在能够相互区分的个体,比如这辆汽车、这个人、这间房子、这张桌子、这株植物、这张支票、这件雨衣。概括来说就是:万物皆对象。

类:若干具有相同属性和行为的对象的群体或者抽象,类是创建对象的模板,由属性和行为两部分组成

类是对象的概括或者抽象,对象是类的实例化。

类的声明

[修饰符] class 类名{//类的声明部分

[成员变量]

[成员方法]

}

成员变量的声明: [修饰符] 数据类型 变量名 [= 初始值];

成员方法的声明:

[修饰符] 返回值类型 方法名([数据类型 参数名,……]){

//方法体,该方法完成的功能代码

}

构造器的声明:

[修饰符] 构造器名([数据类型 参数名,……]){

//构造器完成的功能代码

}

注意:

①构造器名必须和类名一致

②构造器没有返回值类型

③任何类都含有构造器。如果没有显式地定义类的构造器,

④则系统会为该类提供一个默认的无参的构造器。一旦在类中显式地定义了构造器,系统就不会再为这个类提供默认的构造器了。

类的使用

类变量的声明:类名 对象名;

类对象的创建,赋值给变量:对象名 = new 构造器([参数列表]);

对象属性的赋值:属性:对象名.属性名、对象名.属性名 = 数据;

属性和方法的调用:属性:System.out.println(对象名.属性名);方法:对象名.方法名();

成员变量与局部变量:

  • 成员变量:声明在类中方法体之外、可以有缺省值、可以使用修饰符。作用域:整个类

  • 局部变量:声明在方法体或代码块中、没有缺省值、只能使用final修饰。作用域:当前方法体

参数:参数的本质是特殊的局部变量,只能定义在方法的小括号中

重载

方法的重载OverLoading: 同一个类中定义了多个方法名相同而参数不同的方法

重载在同一个类中,方法名相同,参数不同(参数的个数、顺序、类型不同)

构造器的重载:

方法的返回值类型:

  • 无返回值类型:void,return;//结束方法体

  • 有返回值类型为:数据类型(基本数据类型、引用数据类型),`retu

【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】浏览器打开:qq.cn.hn/FTf 免费领取

rn 数据;//结束方法体,并且返回一条数据`

关键字

this关键字:

this是一种特殊的引用,指向当前对象

this的两种使用方法:

如果发生局部变量和成员变量命名冲突时,可以通过this.成员变量名的方式区分成员变量和局部变量。

一个构造方法中需要调用本类的另一个构造方法,可以通过this()的方式调用,但this()必须要书写在第一行。

static关键字:

静态变量: 使用static修饰的成员变量叫做静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。static成员变量的初始化顺序按照定义的顺序进行初始化。

静态方法: 使用static修饰的成员方法叫做静态方法,静态方法可以不依赖于任何对象进行访问(对于静态方法来说,是没有this的),由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。

调用格式:类名.静态变量名 ,类名.静态方法名()

静态内部类(static 修饰类的话只能修饰内部类): 静态内部类与非静态内部类之间存在一个最大的区别: 非静态内部类在编译完成之后会隐含地保存着一个引用,该引用是指向创建它的外围类,但是静态内部类却没有。没有这个引用就意味着:1. 它的创建是不需要依赖外围类的创建。2. 它不能使用任何外围类的非 static 成员变量和方法。

静态代码块:

是一个以static为前导的代码块,一般用于为类的工作做一些初始化工作,如初始化一些静态变量。一个类中可以有许多静态初始化块,并且它们可以出现在类体的任何地方。运行时系统会保证静态初始化块会按照它们在源代码中出现的顺序被调用

static块可以用来优化程序性能:因为它只会在类加载的时候执行一次

super关键字:

super代表的是父类对象,

使用方式:

super.属性名、super.方法名();用于在子类中调用父类被隐藏的同名实例变量

super([参数列表])用于在子类的构造方法中调用父类的构造方法

每一个子类的构造方法在没有显示调用super()系统都会提供一个默认的super(),super()必须是构造器的第一条语句

final关键字:

final 关键字,意思是最终的、不可修改的,最见不得变化 ,用来修饰类、方法和变量,具有以下特点:

  • 修饰类:类不能继承,final 类中的所有成员方法都会被隐式的指定为 final 方法;

  • 修饰符变量:该变量为常量,,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能让其指向另一个对象。

  • 修饰符方法:方法不能重写

说明:使用 final 方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的 Java 实现版本中,会将 final 方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升(现在的 Java 版本已经不需要使用 final 方法进行这些优化了)。类中所有的 private 方法都隐式地指定为 final。

参考:https://gitee.com/SnailClimb/JavaGuide

访问修饰符

访问修饰符对成员变量和成员方法的访问限定


Java的三大特性


封装

封装指隐藏对象的状态信息(属性),不允许外部对象直接访问对象的内部信息(private实现)。但是可以提供一些可以被外界访问的方法来操作属性。

将类中成员变量private,提供public的get和set方法来控制属性的存取动作,以保证对私有属性操作的安全性:

继承

继承extends:多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承单独的那个类即可。多个类可以称为子类,单独这个类称为父类或者超类。

基本语法:

[修饰符] class 子类名 extends 父类名{

类体部分

}

继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的属性或方法(对父类进行扩展),也可以拥有父类的属性和方法,并且通过自己的方法再次实现父类的方法(重写)。通过使用继承,可以快速地创建新的类,可以提高代码的重用,程序的可维护性,节省大量创建新类的时间 ,提高我们的开发效率。

Java只支持单继承,不支持多继承。一个类只能有一个父类,不可以有多个父类。Java支持多层继承(继承体系)。Java继承了父类非私有的成员变量和成员方法,但是请注意:子类是无法继承父类的构造方法的。

注意:不要仅为了获取其他类中某个功能而去继承 ,类与类之间要有所属(“is a” )关系

方法的重写:

子类从父类继承的某个实例方法无法满足子类的功能需要时,需要在子类中对该实例方法进行重新实现,这样的过程称为重写,也叫做覆写、覆盖。

方法重写的前提:继承,子类的修饰符大于等于父类,方法名、参数列表、返回值类型必须相同

多态

多态:一种事物的多种形态(多态的前提:继承、重写、向上转型)

通过多态可以提高代码的可重用性,降低模块之间的耦合度。


抽象类


抽象类的概念:

Java中可以定义没有方法体的方法,该方法的具体实现由子类完成,该方法称为抽象方法,包含抽象方法的类就是抽象类。如:Shape类计算周长和面积的方法无法确定,那么就可以将这样的方法声明为抽象的,以便在具体的子类中进行实现。

抽象类的声明: [修饰符] abstract class 类名 [extends 父类名]{类体}

抽象方法的声明: [修饰符] abstract 返回值类型 方法名([参数列表]);

因为抽象方法无法确定具体执行的功能,所有抽象方法没有方法体,需要在小括号后加上分号

抽象类和普通类除了使用abstract修饰外和普通的类相似,抽象类中可以没有抽象方法,但是一旦某个有抽象方法,那么这个类必须被声明为抽象类。

抽象类的使用:

因为抽象类不是一个具体的类,所以无法实例化,但是抽象类可以用于声明变量

抽象类可以被继承,在子类中实现抽象类的所有抽象方法,以达到抽象类的具体化

Java基础知识总结(超详细整理),java从入门到精通pdf相关推荐

  1. java基础知识总结 超详细

    1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre. 2,JRE:Java Runtime Environment,java程序的运行环境,ja ...

  2. Java 泛型详解(超详细的java泛型方法解析)

    Java 泛型详解(超详细的java泛型方法解析) 1. 什么是泛型 泛型:是一种把明确类型的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型.也就是说在泛型使用过程中,操作的数据类型被指定为 ...

  3. Java基础知识体系_计算机与java

    Java基础知识体系 (一).计算机与java (二).变量与类型 (三).运算符 (四).流程控制 (五).数组 (一).计算机与java 1,计算机:硬件+软件 硬件:客观存在的各种计算机相关设备 ...

  4. java package报错_Java基础知识总结 - 超详细篇(上)

    1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre. 2,JRE:Java Runtime Environment,java程序的运行环境,ja ...

  5. JAVA基础4万字超详细总结

    目录 1.2.1 计算结果的数据类型,与最大类型一致 1.2.2 整数运算转换 1.2.3 浮点数转成整数,小数部分直接舍弃掉 1.2.4 其他 1.3 运算符 1.3.1 除法运算 1.4 流程控制 ...

  6. PHP语言基础知识(超详细)

    文章目录 前言 第一章 PHP语言学习介绍 1.1 PHP部署安装环境 1.2 PHP代码工具选择 第二章 PHP代码基本语法 2.1 PHP函数知识介绍 2.2 PHP常量变量介绍 2.2.1 PH ...

  7. Java SE加强篇——超详细,Java入门,这一篇就够了

    建议先阅读 JavaSE基础篇 第一天:面向对象进阶一 一.static静态 关键字 1.static是什么? static是静态的意思,可以修饰成员变量和成员方法 static修饰成员变量表示该成员 ...

  8. 无源元件之——电容基础知识(超详细)

    电阻.电容.电感是常见且重要的无源器件,本系列文章将分为三篇分别介绍这三种元件的详细的基础知识.本文将从电容器的型号命名.分类.常用电容等五个方面详解电容器. 电容是电子设备中大量使用的电子元件之一, ...

  9. 爆肝3万5千字的Java学习笔记(超详细的java)

    Java学习 java入门 java三大版本 javaSE:标准版(桌面程序,控制台开发-) javaME:嵌入式开发(手机,小家电-) javaEE:E企业级开发(web端,服务器开发-) Java ...

  10. python从入门到精通 pdf 完整超清版-Python从入门到精通PDF高清完整版免费下载|百度云盘...

    提取码:xahb 内容简介 <Python从入门到精通>从初学者角度出发,通过通俗易懂的语言.丰富多彩的实例,详细介绍了使用Python进行程序开发应该掌握的各方面技术.全书共分22章,包 ...

最新文章

  1. 如何构建一个成功的AI PoC(概念验证项目)
  2. 小程序之 保存canvas生成商品图片附加小程序二维码 分享到朋友圈
  3. 基于 Spring Boot 的车牌识别系统(附项目地址)ba
  4. linux生成驱动编译的头文件,嵌入式Linux字符设备驱动——5生成字符设备节点
  5. linux gz 解压缩
  6. android文件管理器,ES文件浏览器(com.estrongs.android.pop) - 4.2.4.6.1 - 应用 - 酷安
  7. JS基础02之流程控制语句
  8. urb传输的代码分析【转】
  9. hdu2000——ASCII码排序
  10. 百练_4123 马走日(深搜)
  11. requirejs 学习笔记 0
  12. 图片相似度——hash算法简介
  13. PHP面向对象知识点
  14. python虚拟环境windows环境搭建_window10配置python虚拟环境的路径
  15. mysql-回表查询是什么
  16. Linux AHCI驱动分析之块设备层
  17. LayaBox---知识点
  18. POWERVR 是什么
  19. WES2009创建开发
  20. php完美导出word,php导出生成word的方法

热门文章

  1. mysql的sql优化工具_DBA的五款最佳SQL查询优化工具,收藏了
  2. python学习手册教程_python学习手册视频教程
  3. 自己的电脑netassist软件(其他上位机软件同理)建立的虚拟TCP服务器其他客户端连不上??但客户端能连接WiFi。
  4. Xshell、Xftp免费版获取教程
  5. JavaSE 字符串
  6. linux下删除编译安装的软件,Linux 中卸载编译安装的软件
  7. 数据库课程设计(学校运动会管理系统)
  8. Quartus与modelsim的初级使用教程
  9. matlab 图像保存为视频教程,山东大学《数字图像处理(MATLAB)》江铭炎视频教程
  10. 局域网带宽控制解决方案 P2P终结者使用详解