Java 萌新入门 -- 一些常见的基础知识点

文章目录

  • 前言
  • 第一章.java语言概述+java语言基础
    • 1.程序文档风格和注释
    • 2.从键盘读取数据
    • 3.变量与赋值
    • 4.java标识符
    • 5.关于数据类型与逻辑运算符
    • 6.限制输出 小数位数:(用第三种)
    • 7.关于带标签的的循环控制语句
  • 第二章.类和对象与数组的定义
    • 1.方法设计
    • 2.面对对象-初步了解
    • 2.类的定义
    • 3.创建对象及其使用
    • 4.堆和栈内存
    • 5.使用对象作为方法的参数
    • 6.成员变量和局部变量的区别
    • 7.面对对象三大特征-封装性
    • 8.this关键字的应用
    • 9.构造方法
    • 10.定义一个标准的类
    • 11.静态关键字static
    • 12.权限修饰符
  • 第三章.数组与字符操作
    • 1.一维数组的定义:
    • 2.增强的for循环
    • 3.数组参数与返回值
    • 4.二维数组的定义
    • 5.格式化输出
  • 第四章.继承
    • 1.继承-初步了解
    • 2.继承的格式
    • 3.继承中成员变量访问的特点
    • 4.区分子类方法中重名的三种变量
    • 5.继承中成员方法的访问特点
    • 6.方法的覆盖重写
    • 7.构造方法在覆盖重写中的访问特点
    • 8.super关键字与this的比较
    • 9.java继承中的特点
    • 10.抽象方法与抽象类
    • 11.final修饰符
  • 第五章.接口
    • 1.接口-初步了解
    • 2.接口的基本定义格式
    • 3.接口的抽象方法定义
    • 4.接口中抽象方法的实现(接口的实现)
    • 5.接口中的默认方法
  • 总结

前言

为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚,文章中如果有记录错误,欢迎读者朋友们批评指正。
(博客的参考源码可以在我主页的资源里找到,如果在学习的过程中有什么疑问欢迎大家在评论区向我提出)

第一章.java语言概述+java语言基础

1.程序文档风格和注释

  • 一致的缩进和空白:二元操作符的两边应该各加一个空格;
  • 块的风格:代码块大致分为两种风格,一种是行模式,另一种是次行式;
  • 在eclipse中使用 CTRL+SHIFT+F 快捷键可以对源代码格式化; 使用 ALT+SHIFT+R 一键选中同名词条;

2.从键盘读取数据

要从键盘读取数据可以使用 Scanner 类的 nextInt 方法或 nextDouble 方法或 next 方法(字符型):

  1. 创建一个 Scanner 类的对象;
  2. 以标准输入 System.in 作为参数;
  3. 得到 Scanner 对象后,就可以调用它的有关方法获取数据。

在这里插入图片描述

3.变量与赋值

Java有两种类型的变量:基本类型的变量和引用类型的变量。

  • 基本类型的变量包括数值型(整数型和浮点型)、布尔型和字符型;
  • 引用类型的变量包括类、接口、枚举和数组等。

4.java标识符

  • 在程序设计中,标识符用来为变量、方法和类命名,有两种命名方法:
  • 在java程序中,类名和接口名一般使用 PascalCase 拼写法,且应该用单词命名;
  • 变量名和方法名一般用 camelCase 拼写法。
  1. PacasalCase 称为帕斯卡拼写法,即将命名的所有单词首字母大写,然后直接连接起来,单词之间没有连接符,如NumberOfStudent;
  2. cameCase 称为骆驼拼写法,它与PacasalCase的拼写法的不同之处是将第一个单词的首字母小写,如fristName。

5.关于数据类型与逻辑运算符

  • 若要表示 long 类型字面值,可以在后面加上 lL
  • 浮点类型的科学计数法形式:如 256e3 表示 256*10^3;
  • 如果表示 float 型字面值数据,必须在后面加上 Ff;
  • ’\n’ 表示换行;
  • 布尔型:“bollean”;
  • i++ 表示先使用完该变量后再加 1,++i 表示先加 1 后再赋值给变量
  • “&&” 和 “||” 为短路运算符,而 “&” 和 “|” 为非短路运算符。它们的区别是:短路运算符,当使用 “&&” 进行“与”运算时,若第一个(左边)操作数的值为 false 时,就可以对整个表达式进行判定;而用短路运算符 “&” 则需要对表达式两边求解。同理。、
  • 对于异或 “^” ,当两个操作数一 “true” 一 “false” 时表达式为真,否则表达式为假;
  • 复合运算符是”整体”为单位,如 a+=5*++a/5+2 等价于 a=a+(5*++a/5+2);
  • 运算符的优先级:自增自减>逻辑非>加减乘除运算>比较运算符>逻辑与逻辑或>赋值运算符>复合运算符;
  • 强制数据类型转换:其语法是在括号中给出要转换的目标数据类型,随后是待转换的数据类型。

6.限制输出 小数位数:(用第三种)

在这里插入图片描述

7.关于带标签的的循环控制语句

  • 带标签的 break 可用于循环结构和带标签的语句块,而带标签的continue 只能用于循环结构;
  • 带标签的 break 和 continue 语句不能跳转到不相关的语句块。

第二章.类和对象与数组的定义

1.方法设计

  • 初步了解(第一印象)

在这里插入图片描述
在这里插入图片描述

  • 方法的标准定义格式

在这里插入图片描述

  • 方法调用的三种格式

在这里插入图片描述

  • 方法调用的流程图解

1. 找到方法
2. 参数传递
3. 执行方法体
4. 将方法的返回值带回方法的调用处

在这里插入图片描述

  • 对比方法有参数和无参数

在这里插入图片描述

  • 方法的重载

在这里插入图片描述

2.面对对象-初步了解

  • 面对对象与面对过程

在这里插入图片描述

  • 类和对象
    在这里插入图片描述

2.类的定义

在这里插入图片描述

成员变量一般不赋值,在创建对象后再赋值

3.创建对象及其使用

在这里插入图片描述

4.堆和栈内存

  • 一个对象的内存图
  1. 在运行方法前,方法区要最先有数据,保存的是“.class”;
  2. main方法优先执行,进入栈空间称为进栈或压栈;
    方法执行完后称为出栈,遵循“先进后出”的原则;
  3. 等号左边好比是一个局部变量,对象名称其实就是个变量名称;
  4. new的东西全在堆当中,new的东西的内容看方法区;
  5. 对于一个对象来说,它的成员方法保存的是一个地址值,从堆中的地址指向方法区中的地址;
  6. 创建对象涉及到地址的传递,根据地址就能找到对象,对象通过地址也能找到对应的内容;
  7. 一旦main方法结束后,整个程序就会停下来,所有的内存就全都没有了;

在这里插入图片描述

  • 两个对象使用同一个方法的内存图(○1的重复)

在这里插入图片描述

  • 两个对象引用指向同一个对象的内存图(注意栈内存中phone one 指向 phone two的箭头)

在这里插入图片描述

5.使用对象作为方法的参数

在这里插入图片描述
在这里插入图片描述

6.成员变量和局部变量的区别

在这里插入图片描述

注意:方法参数可以直接打印(使用),因为调用方法必然会对参数赋值。

7.面对对象三大特征-封装性

  • 方法的封装
    在这里插入图片描述

  • private关键字的封装

在这里插入图片描述
在这里插入图片描述

8.this关键字的应用

  • This关键字主要使用在以下三种情况;
  1. 解决局部变量与成员变量同名的问题;
  2. 解决方法参数与成员变量同名的问题;
  3. 用来调用该类的另一个构造方法。
  • Java语言规定,this 只能用在 非 static 方法(实例方法和构造方法)中,不能用在 static 方法中。实际上,在对象调用一个非 static 方法时,向方法传递了一个引用,这个引用就是对象本身在方法体中用 this 表示

9.构造方法

在这里插入图片描述

10.定义一个标准的类

在这里插入图片描述

11.静态关键字static

  • 静态关键字static初步了解

在这里插入图片描述

  • 静态static关键字修饰成员变量

在这里插入图片描述

  • 静态static关键字修饰成员方法

在这里插入图片描述

  • 静态static的内存图

在这里插入图片描述

  • 静态代码块

在这里插入图片描述

12.权限修饰符

  • 类定义中的权限修饰符
  1. Public:若类用public修饰,则称该类为公共类,公共类可以被任何包中的类使用;
  2. 若不加public修饰符,类只能被同一个包中的其他类使用;
  3. 如果类用abstract修饰,则该类称为抽象类;
  4. 若用final修饰符,则该类为最终类。
  • 变量的访问权限修饰符
  1. Public:若成员变量用public修饰,则称该变量为公共变量,公共变量可以被任何方法使用;
  2. 没有访问修饰符,该变量只能被同一个包中的类访问;
  3. 用private修饰的变量称为私有变量,私有变量只能被同一个类中的方法访问;
  4. 用protected修饰的变量称为保护变量,保护变量可以同一个包的类或子类访问;
  5. 实例变量和静态变量:变量如果用static修饰,则该变量称为最终变量,也称为类变量。没有用static修饰的变量称为实例变量;
  6. 用final修饰的变量叫做最终变量,也称为标识符常量。常量可以在声明时赋值,也可以在后面赋初值,一旦为其赋值,就不能再改变了;
  • 方法访问权限修饰符
  1. public:用public修饰的方法可以在任何类中调用;
  2. private:private修饰的方法只能在同一个类中被调用;
  3. protected:protected修饰的方法可以在同一个类,同一个包中的类及其子类中被调用;
  4. 如果一个方法缺省访问修饰符,则称该包可访问的,即可以被同一个类的方法访问和同一个同一个包中的类访问;
  5. 没有用static修饰的方法称为实例方法,用static修饰的方法称为静态方法。
    6. final和abstract方法
    用final修饰的方法称为最终方法,最终方法不能被覆盖,方法的覆盖与继承有关。用abstract修饰的方法称为抽象方法;
  • 汇总

在这里插入图片描述

第三章.数组与字符操作

1.一维数组的定义:

  • 声明数组;

声明数组就是告诉编译器数组名和数组元素类型,有以下两种等价形式:

   Elementype []arrayNameElementype arrayName[]

注意:数组声明不能指定数组元素个数,这一点与c/c++不同
在java语言中,数组是引用数据类型,也就是说数组是一个对象,数组名就是对象名(或引用名)。数组声明实际上是声明一个引用变量。如果数组元素都是引用类型,则称该数组是对象数组。所有数组都继承Object类,因此,可以调用Object类的所有方法。

  • 创建数组:

数组声明仅仅声明一个数组对象引用,而创建数组是为数组的每个元素分配存储空间。创建数组使用new语句,一般格式为:

ArrayName = new elementType[arraysize]

数组的声明和创建可以写在一个语句中,如:

Double []marks = new double[5]; 
  • 数组元素的初始化:

声明数组同时可以使用初始化器对数组元素初始化看,在一对大括号中给出数组的每个元素值。这种方式适合数组元素较少的情况,这种初始化也称为静态初始化。

Double[] marks = new double[]{1,2,3,};

这种方法创建的数组不能指定大小,系统根据元素个数确定数组大小。另外还可以在最后一个数组元素加上一个逗号,以方便补充。还可以写成更简单的形式;

Double[] marks = {1,2,3,};

2.增强的for循环

如果程序只需顺序访问数组中每个元素,可以使用增强的for循环。增强的for循环可以使用迭代数组和独行集合的每个元素。它的一般格式为:

For(type inedntifier: expression) 

(数组元素数据类型) (数组的每个元素) (数组或集合对象)

3.数组参数与返回值

数组可以作为方法参数的参数和返回值。可以将数组对象作为参数传递给方法。

在这里插入图片描述
在这里插入图片描述

4.二维数组的定义

  • 二维数组的声明
Elementype[][] arrayName;
Elementype arrayName; [][]
Elementype[] arrayName[];
  • 二维数组的创建
    创建二维数组就是为二维数组的每个元素分配存储空间。系统先为高维分配引用空间,然后再顺次为低维分配空间。分配空间有两种分配方式:

直接为每一维度分配空间,如:

int[][]matrix = new int[2][3];

分别按次给不同维度赋值,如:

int[][] matrix = new int[2][1];//先为一维分配空间
Matrix[0]=new int[3];//再为二维分配空间
Matrix[1]=new int[3];
  • 二维数组的初始化

对于二维数组也可以使用初始化器在声明数组的同时为数组元素初始化。例如:

int[][] matrix={{15,26,20,89},{23,80,67,54},{60,12,23,45}};
  • 不规则的二维数组

Java的数组是数组的数组,即数组元素也是一个数组。对二维数组声明时可以只指定第一维的大小,第二维的每个元素可以指定不同的大小。如:

String [][]cities = new String[2][];
Cities[0] = new String[3];
Cities[1] = new String[2];  

5.格式化输出

可以用System.out.printf()方法在控制台上显示格式化输出,格式如下:

Public printStream printf(String format,object…args) 

参数format是格式控制字符串,其中可以嵌入格式符指定参数如何输出:args为输出列表,参数可以是基本数据类型,也可以是引用数据类型。如:

System.out.println(%7.2d,a);

第四章.继承

1.继承-初步了解

(1)继承初步了解

在这里插入图片描述

2.继承的格式

在这里插入图片描述

3.继承中成员变量访问的特点

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述在这里插入图片描述

4.区分子类方法中重名的三种变量

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5.继承中成员方法的访问特点

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

6.方法的覆盖重写

  • 基础概念
    在这里插入图片描述

  • 注意事项

    Private方法不能覆盖。只有非private的实例方法才可以覆盖,如果在子类中定义了一个方法在父类中是private的,则这两个方法无关;
    父类中的static方法可以被继承,但不能被覆盖。如果子类中定义了与父类中的static方法完全一样的方法,那么父类中的方法被隐藏。父类中被隐藏的static方法仍然可以使用”类名.方法名()”形式调用。

在这里插入图片描述
Private方法不能覆盖。只有非private的实例方法才可以覆盖,如果在子类中定义了一个方法在父类中是private的,则这两个方法无关;

父类中的static方法可以被继承,但不能被覆盖。如果子类中定义了与父类中的static方法完全一样的方法,那么父类中的方法被隐藏。父类中被隐藏的static方法仍然可以使用”类名.方法名()”形式调用。

  • 应用场景

在这里插入图片描述

7.构造方法在覆盖重写中的访问特点

在这里插入图片描述

8.super关键字与this的比较

  • super关键字的三种用法

在这里插入图片描述

  • this关键字的用法

在这里插入图片描述
在这里插入图片描述

  • super关键字和this关键字的内存图

在这里插入图片描述

9.java继承中的特点

在这里插入图片描述

子类继承父类中非private的成员变量和成员方法;

定义类时若缺省extends关键字,则所定义的类为java.lang.object类的直接子类。

10.抽象方法与抽象类

  • 抽象的概念初步了解
    在这里插入图片描述

  • 抽象方法与抽象类的定义格式

在这里插入图片描述

  • 抽象方法的使用

在这里插入图片描述

  • 抽象类与抽象方法的注意事项

在这里插入图片描述

11.final修饰符

  • finlal修饰类

如果一个类用final修饰,则该类就为最终类,最终类不能被继承;

  • final修饰方法

如果一个方法用final修饰,则该方法不能被子类覆盖;

  • final修饰变量

用final修饰的变量包括类的成员变量、方法的局部变量和方法的参数。一个变量如果用final修饰,则该变量为常值变量,一旦赋值便不能改变。

第五章.接口

1.接口-初步了解

在这里插入图片描述

2.接口的基本定义格式

在这里插入图片描述

3.接口的抽象方法定义

在这里插入图片描述

4.接口中抽象方法的实现(接口的实现)

在这里插入图片描述

5.接口中的默认方法

  • 初步了解(接口升级,类AB报错)

在这里插入图片描述在这里插入图片描述

  • 接口中默认方法的实现(类AB不变,但可调用default方法)

在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

(与覆盖抽象方法略有差异)

总结

欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下。
(博客的参考源码可以在我主页的资源里找到,如果在学习的过程中有什么疑问欢迎大家在评论区向我提出)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/135618.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

搭建嵌入式GDB调试环境以及VSCode+gdbserver 图形化调试

目录 1 搭建嵌入式gdb调试环境 1.1 交叉编译工具链自带的gdb和gdbserver 1.2 使用gdb进行嵌入式程序调试 1.2.1编写简单测试程序 1.2.2 gdb调试程序 1.3 源码编译gdb和gdbserver 1.3.1 下载gdb和gdbserver源码 1.3.2 编译gdb 1.3.3 移植gdbserver 2 VSCodegdbserver 图…

单片机程序无法下载?

原因一:电源问题 电源可能是导致STM32微控制器无法下载程序的一个常见原因。确保电源稳定对于正常运行和下载程序至关重要。以下是一些电源问题: 1. 电源电压不足:如果STM32微控制器没有足够的电压供应,它可能无法正常工作或下载程…

22款奔驰GLS450升级中规主机 实现导航地图 中文您好奔驰

很多平行进口的奔驰GLS都有这么一个问题,原车的地图在国内定位不了,语音交互功能也识别不了中文,原厂记录仪也减少了,使用起来也是很不方便的。星骏汇小许 Xjh15863 其实很简单,我们只需要更换一台中规的新主机就可以实…

【数据结构】树与二叉树(六):二叉树的链式存储

文章目录 5.1 树的基本概念5.1.1 树的定义5.1.2 森林的定义5.1.3 树的术语5.1.4 树的表示 5.2 二叉树5.2.1 二叉树1. 定义2. 特点3. 性质引理5.1:二叉树中层数为i的结点至多有 2 i 2^i 2i个,其中 i ≥ 0 i \geq 0 i≥0。引理5.2:高度为k的二叉…

『MySQL快速上手』-⑤-数据类型

文章目录 1.数据类型有哪些2.数值类型2.1 tinyint 类型2.2 bit 类型2.3 小数类型2.3.1 float2.3.2 decimal 3.字符串类型3.1 char3.2 varchar3.2 char 和 varchar 比较 4.日期和时间类型5.enum和set 1.数据类型有哪些 MySQL支持多种数据类型,这些数据类型可用于定义…

【AntDesign】Docker部署

docker部署是主流的部署方式,极大的方便了开发部署环境,保持了环境的统一,也是实现自动化部署的前提。 1 项目的目录结构 dist: 使用build打包命令,生成的打包目录 npm run build : 打包项目命令 docker: 存放docker容器需要修改…

Python爬虫-获取汽车之家车家号

前言 本文是该专栏的第9篇,后面会持续分享python爬虫案例干货,记得关注。 地址:aHR0cHM6Ly9jaGVqaWFoYW8uYXV0b2hvbWUuY29tLmNuL0F1dGhvcnMjcHZhcmVhaWQ9MjgwODEwNA== 需求:获取汽车之家车家号数据 笔者将在正文中介绍详细的思路以及采集方法,废话不多说,跟着笔者直接往…

MCU系统的调试技巧

MCU系统的调试技巧对于确保系统稳定性和性能至关重要。无论是在嵌入式系统开发的初期阶段还是在产品维护和优化的过程中,有效的调试技巧可以帮助开发人员快速发现和解决问题,本文将讨论一些MCU系统调试的技巧。 首先,使用调试工具是非常重要…

[量化投资-学习笔记008]Python+TDengine从零开始搭建量化分析平台-CCI和ATR

目录 1. 指标简介CCIATR 2. 程序编写题外话 1. 指标简介 将这两个指标放在一起,一方面是因为这两个指标都属于摆动指数,可以反应市场的活跃度。 另一方面是因为CCI和ATR与之前提到的EMA,MACD,布林带的三个指标的计算基础不同。之前的三个指标都是以收盘…

AR眼镜硬件解决方案_AR/VR智能眼镜安卓主板芯片方案介绍

随着近两年来增强现实(AR)技术的逐渐成熟,采用MT8788芯片解决方案的AR眼镜已经问世。众所周知,AR技术可以帮助开发者打造一个既强大而又实用的混合现实世界,将虚拟与真实世界相结合。 据了解,MT8788芯片采用了多芯片分布式处理系统…

虚幻5.3打包Windows失败

缺失UnrealGame二进制文件。 必须使用集成开发环境编译该UE项目。或者借助虚幻编译工具使用命令行命令进行编译 解决办法: 1.依次点击平台-项目启动程序 2.点击后面的按钮进行设置 3.稍等后,打包后的程序即可运行,之后就可以愉快的打包了

支持向量机 (SVM):初学者指南

照片由 Unsplash上的 vackground.com提供 一、说明 SVM(支持向量机)简单而优雅用于分类和回归的监督机器学习方法。该算法试图找到一个超平面,将数据分为不同的类,并具有尽可能最大的边距。本篇我们将介绍如果最大边距不存在的时候…

Android修行手册-实现利用POI将图片插入到Excel中(文末送书)

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&…

ZZ308 物联网应用与服务赛题第G套

2023年全国职业院校技能大赛 中职组 物联网应用与服务 任 务 书 (G卷) 赛位号:______________ 竞赛须知 一、注意事项 1.检查硬件设备、电脑设备是否正常。检查竞赛所需的各项设备、软件和竞赛材料等; 2.竞赛任务中所使用…

lsky Pci-go nas个人图床搭建

①安装PicGo 应用 http://192.168.50.249:18189/api/v1 上传电脑需要有node 和 npm环境,官网下载最新安装板node后,自动会配置npm环境。 ②安装 Lsky-Uploader 获取token: http://www.metools.info/code/post278.html 服务器域名为 Lsky p…

UICollectionView左上对齐布局

最近完成的项目需要左上对齐的瀑布流,每个格子的尺寸不同,可以使用UICollectionView定义不同的尺寸,但是CollectionView的格子高度是相同的,我想要的是这样 左上对齐分别是0、1、2;3、4; 当前只能自定义一个…

OpenCV 输出文本

PutText() 输出文本 OpenCV5 将支持中文字符的输出, 当前版本OpenCV4原生不支持, 可以使用Contrib包FreeType方式实现, 不过比较麻烦.为了省事, 也可以通过将Mat转成bitmap,然后使用GDI方式输出中文字符. 示例代码 /// <summary>/// OpenCV暂时不能支持中文字符输出,显示…

Node.js中的回调地狱

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

JAVA将List转成Tree树形结构数据和深度优先遍历

引言&#xff1a; 在日常开发中&#xff0c;我们经常会遇到需要将数据库中返回的数据转成树形结构的数据返回&#xff0c;或者需要对转为树结构后的数据绑定层级关系再返回&#xff0c;比如需要统计当前节点下有多少个节点等&#xff0c;因此我们需要封装一个ListToTree的工具类…

Python 海龟绘图基础教学教案(二十六)

Python 海龟绘图——第 49 题 题目&#xff1a;绘制下面的图形 解析&#xff1a; 使用二重循环绘制六叶长方形风车。 答案&#xff1a; Python 海龟绘图——第 50 题 题目&#xff1a;绘制下面的图形 解析&#xff1a;使用二重循环绘制由四个相同大小菱形组成的四叶风车图案…