Java面向对象基础(java入门)

变量按照数据类型的分类:

1、基本数据类型:byte \ short \ int \ long \float \ double \ boolean

2、引用数据类型:类、数组、接口、枚举、注解、记录14

数组分类:基本数据类型数组;引用数据类型的数组;

按照数组的维数来分的话:一维数组;二维数组;

数组的特点:
数组中的元素在内存中是依次紧密排列的,有序的。

数组,属于引用数据类型的变量。数组的元素,既可以是基本数据类型,也可以是引用数据类型;

数组,一旦初始化完成,其长度就确定了,长度不可更改;

创建数组对象会在内存中开辟一整块的”连续空间“。占据的空间的大小,取决于数组的长度和数组中原色的类型。

1、一维数组的使用:

数组的声明和初始化

//变量类型的赋值格式;

数组的声明;

double[] prices;

sritng[] foods;

//foods = new string[4] 第二种的话必须写上数组的长度;

数组的初始化

静态初始化 数组变量的赋值与数组元素的赋值同时进行

动态初始化 数组变量的赋值与数组元素的赋值操作是分开进行的;

prices = new double[]{10,20,30,40,55};

调用数组的指定元素

通过角标的数字,获取数组的元素;

角标的范围从0开始,到数组的长度-1;

数组的长度,用来描述数组容器的大小

length

数组的属性

数组的遍历 for循环

数组元素的默初始值

一维数组的内存解析(难)

前提:在mian方法中声明变量,int[] arr = new int[]{1,2,3};

虚拟机线:main()作为一个栈,压人栈空间中,在mian()栈帧中存储arr变量。arr记录着数组实体的首地址。

堆,数组实体储存在堆空间中

二维数组的维数跟类型必须都得一样

二维数组:

一维数组的元素又是一维数组;构成了二维数组;

使用:

数组的生声明跟初始化;

调用数组的指定元素

数组的属性,length,表示数组长度

数组的遍历

数组元素的默认初始值;

二维数组的内存解析(难)

【数组的常见算法1】

1、数值形数组特征值的统计;

这里的特征值涉及到:平均值,最大值,最小值,总和等;

2、数组元素的赋值,(实际开发中,遇到的场景比较带哦)例如:杨辉三角,要用数组这样的载体来使用

3、数组的复制,赋值

4、数组的反转

5、数组的扩容,缩容

6、数组的查找

线性查找、二分法查找;

数组的排序:

冒泡排序:最简单的

快速排序是:常用的 不是很会

数组为什么从0开始,编号,而不是1

数组的索引,表示数组元素距离首地址的片力量,因为第一个元素的地址鱼首地址相同,所以偏移量就是0。所以从0开始。

【数组的常见算法2】

1、数组的扩容与缩容

2、数组元素的查找

顺序查找:

优点 算法简单

缺点 效率较低,时间复杂度高

二分法查找

优点 算法相较于顺序来说比较复杂

缺点 算法相比来说比较难。

3、数组的排序

排序算法的衡量标准;

排序的分类

冒泡排序:

完整的冒泡:

冒泡现在完全学会啦!

好多算法都是根遍历有关系的

Java面向对象

一定要多写代码

学习面向对象的三条主线:

Java类及类成员:(重点)属性,方法,构造器;(熟悉)代码块,内部类;

面向对象的特征:封装、继承、多态、(抽象)

其他关键字的使用:this,super ,package,impor,static,final,interface,abstact等。

类:比较抽象的个体

对象:具体的一个一个的人。

面向对象的两个核心的概念 类 (class),对象(object)。

对这两个概念的理解:

类:具有相同特征的事物的抽象描述,是’抽象‘,概念上的定义。

对象,实际存在的该类事物的’每个个体‘,是’具体的‘,因而称之为’实例‘。

类与对象的声明。

类的内部成员。

成员之一、属性,成员变量,field(字段,域)

成员之二:(成员)方法,函数、method

类中的属性称之为:成员变量,

行为:函数成员方法。

变量的分类:

角度1、按照数据类型来分,基本数据类型(8种)、引用数据类型,(数组、类、接口、枚举、注解、记录)

角度二:按照变量在类中声明位置的不同,成员变量 、局部变量,(方法内,方法形参、构造器内 ,

成员变量跟局部变量的区别:(重要)

都有那些权限是修饰符:public 、 private(私有的) 、缺省。

属性的几个称谓:成员变量、属性、field(字段,域)

面向对象完成具体功能的操作的三步流程。(非常重要)

步骤1、创建类,并设计类的内部成员(属性,方法)

步骤2、创建类的对象,比如:phone p1 = new phone();

步骤3、通过对象,调用其内部的声明的属性或方法】

栈:方法中定义的变量。

堆:new出来的结构,数组的实体,对象的实体,包括对象的属性。

方法区:f

方法的重载(oberload)

1、定义,在同一个类中,允许在一个以上的同名方法,只要他们的参数不同即可,满足这样特征的多个方法,批次之间构成的方法重载。

2、总结为:“两同一不同”

两同:同一个类、相同过的方法名

一不同:参数列表不听,参数个数不同给,参数类型不同。

3、Arrysl类中的sort(xxx【】 )、binary S arch(xxx【】 arr,xxx)、equals(xxx【】,yyy【】)

4、如何判断连个方法是相同的的呐?(换句话说,编辑器是如何确定调用某个剧吐的方法呐?)

如何判断两个方法是相同的呐?方法名相同,且形参列表也相同。(形参列表相同指的是参数个数和类型都相同,

在一个类中允许性存在多个相同名字的方法,只要他们的形参列表不同即可。

编译器是如何确定调用某个具体的方法呐?

先通过确定方法名字确定了一波方法的重载,再通过参数,确定调用的是哪个方法。

注意:方法的重载与形参名、权限修饰符,返回值类型都没有关系。

两个方法允许同时存在

可变个数形参的方法(jdk5)

1、使用场景

在调用方法的时候可能出现方法形参的类型是确定的,但是参数的个数不确定,此时我么可以使用可变个数形参的方法。

2、格式 (参数类型 ...... 参数名)

3、说明

优先考虑确定的,在考虑兼容;

1)可变个数形参的方法在调用时,针对于可变的形参赋的实参的个数可以为 0 个,1个或多个。

2)可变个数形参的方法是同一种,同名的多个方法之间可以构成重载。

3)特例:可变个数形参的方法与同一个类中方法名相同,且与可变形参的类型相同的数组参数,不构成重载。

4)可变个数的形参必须声明在列表的最后。

5)可变个数的形参最多在一个形参列表中出现一次。

方法三:方法的值传递机制 值传递变量

基本数据变量没有地址值的说法,应用数据类型存储的额就是地址值,所以传的是地址值。

1、方法内声明的变量,

1)如果是基本数据类型的变量,则将此变量把保存的数值传递出去。

2)如果是引用类型的数据变量,则是将此变量的地址值传递出去。。

2、规则:实参给形参赋值的过程;

>如果是基本数据类型的变量,则将实参保存的数值赋值给形参;

>如过形参是应用数据类型的变量,则将实参保存的地址值传递给形参;

3、Java中的参数传递机制是什么? (值传递)

第一种方法是错误的:

递归方法:方法自己调用自己的现象称为递归;

递归方法的分类:直接递归,间接递归;

使用说明:

>递归方法包含了一种’隐式递归‘

>递归方法会’重复执行‘某段代码’,但这种重复执行无需循环控制;

>递归一定要向‘已知方向’递归,否则这种递归就变成 了无穷递归,停不下来,类似于‘死循环’,最终发生‘栈内存溢出’。

注意:

1、递归调用会占用大量的系统堆栈,内存耗用多,在递归调用层次多时要比循环慢的多,所以在使用递归时,要慎重;

2、再要求高性能的情况下尽量避免使用递归,递归调用既花时间又耗内存。考虑使用循环迭代。

使用递归调用求阶乘;

public int method2(int n) { if (n == 1) { return 1; } else { return n * method2(n - 1); } }

package关键字的使用

1、说明:包

>package用于指明文件中的类,接口等结构所在的包

-一个源文件之能有一个声明包的 package语句;(放在整个源文件之前)

- package 语句作为源文件的第一条语句出现,若出现缺省语句就视为无名包;

- 包名:属于标识符,满足标识符的命名规则,规范(全部小写),见名知i意;

- 取名的时候不要用 java xx 包

- 包对应于文件系统高中的目录,”.“来指明目录的层次,每.一次就说明有一个目录

-不能定义同名的类;不同的包下可以定义同名的类;

包的作用:

-包可以包含类的子包,,划分’项目层次‘,便于管理

-帮助’管理大型软件‘系统,将功能相近的类共划分到同一个包中,mvc设计模式;

-解决’类名‘冲突的问题

-控制访问权限;

3、JDK中主要的包

-java.lang ------string 、 math、integer 、system thread;

-java.net ---------包含执行于网络相关的类和接口;

-java.in-----------包含能提供多种输入/输出功能的类;

-java.util --------- 包含一些实用的工具类,例如,定义系统性,接口的集合;使用日期相关的而函数;

-java.text ------包含了一些Java的格式化相关的类;’

-java.sql--------包含了Java进行JDBC数据库编程的入口

-java.awt -------包含了构成抽象窗口工具(abstract windows toolkits)的多个类;

4、import关键字的使用

import:导入

import:语句 引入类,说明在哪里去照这个类;的使用;

import 包名 类名;

使用全类名的方式;

(了解)import static 组合使用,调用指定类或接口下的静态的属性或方法;

public int method2(int n) {

if (n == 1) {

return 1; } else {

return n * method2(n - 1); } }

3w

why 为什么要用

what 到底是什么

how到底怎么用

面向对象的------封装性

1、为什么需要封装性:

高内聚:类的内部数据操作细节自己完成,不允许外部干涉;

低耦合:尽保禄少量的方法给外部使用,尽量方便外部调用;

通俗来说就是,把该隐藏的隐藏起来,该暴露的暴露出来;

2、如何实现封装?

Java规定了4种权限修饰,分别是:private 、 缺省 、 protected 、 public

2.2作用

我们可以用4种修饰符类及类的内部成员,当这些成员调用时,体现可见性的大小;

4、四种修饰符的具体使用

>类:只能使用public、缺省等修饰

>类的内部成员:可以使用4种权限修饰符进行修饰;

开发中4种权限使用频率的情况;

比较高:public 、private

比较低:缺省、protected

封装i性的体现;

>场景一:私有化类的属性,体统公共的get喝set方法,对此属性进行获取或修改。

>场景二:将类中不需要对外暴露的方法,者只为private

>场景三:单例模式种构造器private的了,避免在类的外部创建实例。(放到static关键字之后)

构造器 constructor 构造方法

1、constructor 建设者,建造者

construct :v 建设建造创造

constructor: n建设、建造

2、构造器的作用

作用一:搭配new 关键字,创建类的对象;

作用二:在创建对象的同时可以给对象的相关属性赋值;(直接在造对象的时候直接赋值)

3、构造器的使用说明;

>构造器声明的格式,权限修饰符 类名(形参列表){}

>创建类之后,在么有显示提供任何构造器的同时,系统默认给提供的是空参构造器;且构造器的权限与类声明的权限相同‘

>一旦类中显示声明了构造器,系统不在提供莫仍的空参构造器

>一个类中可以声明多个构造器,构造器可以进行重载,

类中的属性(当前仅仅考试实例变量)赋值的过程;

1、在类的属性中,有哪些位置给属性赋值;

①默认赋值 、

②显示赋值、

③构造器赋值、

④通过’对象.方法’赋值;

⑥通过’对象.属性’赋值“

3、以上操作在对象创建过程中可以执行几次

面向对象的进阶课程;

this关键字:

thisi是什么

-在方法中(准确的说是实例方法或static方法)内部使用;表示调用该方法的对象;

- 在构造方法内部使用,表示该构造器正在初始化对象;

1、目前出现的问题 、解决方案

我们在声明一个属性对应的setXX方法时,通过形参给对应的属性赋值,如果形参名和属性名同名,那么如何区分变量那?

解决方案:使用this,具体来讲,使用this修饰变量,表示的是属性,没有this修饰的,表示的是形参;

2、this 可以调用的结构,成员变量;方法、构造器 、

3、this的理解:当前对象(在方法中调用时)当前正在创建的对象;

4、this 调用属性的和方法;

针对内部的使用情况,(准确说是非static修饰的方法)

一般情况通过对象a调用方法,可以在方法内调用当前对象啊的属性,或其他方法,此时,我们可以在属性和其他方法前使用”this“,表示当前属性或方法所属的对象,但是一般情况下,我们都选择省略此”this“结构;

特殊情况下,如果方法的新参与对象的属性同名了,我们必须使用,”this“进行区分,使用”this“修饰的变量即为属性,(或者成员变量),没有使用this,修饰变量,即为局部变量。

针对于构造器内部的情况;

- 我们可以使用this(空参形式)格式,调用给你当前类中指定的构造器

-我们可以在类的构造器中, 调用给你当前类中指定的构造器-

- 要求this(空参形式)必须声明在构造器的首行

-结论:this(空参形式)在构造器中最多声明一个:

-如果一个类中声明了n个构造器,则最多有 个n-1个构造器可以使用this(空参形式)的结构

这个是一般情况下的使用方法跟栈的问题;

面向对象的第二大特征:继承性(方法的重写)

1、继承性的理解:

-生活上:财产的继承,颜值的继承

-代码层面:

>自上而下,定义了以恶类A,在另一个类时,发现类的功能与A的功能相似时,考滤继承类A

>自下而上:定义类B,C,D,返现,有类似的属跟方法,则可以考虑将相同的属性跟方法进行抽取;

封装到A类当中,让其他类进行继承了,剩余B,C,D中的类就可以删除了

2、继承性的好处

- 继承的出现减少了代码的冗余,提高了代码的复用性i;

-继承的出现,有利于功能的扩展;

- 继承的出现让类与类之间产生了is - a的这种关系,为多态的使用提供了前提;

- 继承描述事物之间的所属关系,这种关系是 is - a 父类通用更一般,子类更具体;

3、继承的格式;

class A {

//属性方法

}

class extend A{

}

类A:父类,super class,超类 ,基类

类B:子类,subclass ,派生类

4、有继承性以后

-子类就获取到了父类中的声明跟方法

-但是由于封装性的印象,子类可不能直接调用父类中的属性跟方法;(get方法)

-子类在继承父类之后,还可以扩展自己的特有功能(体现,增加特有的属性,方法)

extend :延展,扩展,延伸

子类跟父类的理解,区别于集合跟子集的概念

-不要为了继承而继承,在继承之前 就判断一下is - a的这种关系。

5、默认的父类;

Java中声明的类,如果没有显示的声明其父类的手,则默认为Java.lang.boject

6、补充声明:

-Java支持多重继承

直接父类,间接父类

-Java中的子父类的概念是相对的

-Java中一个父类可以声明多个子类,反之,一个子类只能有一个父类;(Java的继承性)

异常捕获

两种方式:try-catch-finaly 、 throws方式

mysql 关系型数据库

关系型数据库:最古老的数据库是(二维表格的形式)。表与表之间的关系模型

优势:便于复杂数据查询

事物支持

非关系型数据库:性能特别高,舍去了一些功能;

键值型数据库:keyvalue 内存缓存,Redis典型的缓存型数据库

搜索引擎数据库:soir、elasticesacrh、spark

列式数据库:

DBMS数据库管理系统:

E-R模型:实体集、属性、联系集;

MySQL的基础的操作命令:

显示所有数据库:show databases

显示创建的数据库: show create database 数据库名称:

创建一个数据库: create database 数据库名称:

创建数据库前先判断是否存在: create database if not exists 数据库名称创建数据库并设置字符编码格式: create database 数据库名 character set gbk;修改数据库的字符集: alter database 数据库名称 character set 字符集名称(utf8);

删除一个数据库: drop database 数据库名;(drop database if exists 数据库名称先判断是否存在数据库)

切换数据库: use 数据库名称,

查询现在正在使用的数据库: select database();

字符集的配置文件在my.ini 文件夹当中;

查看当前的字符集

show variables like 'character_%';

查看

show variables like 'collation_%';

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值