一些java基础的回顾

java基础回顾

1、变量三种定义方式

a定义并赋值b、先定义后赋值c、多个变量同时定义或赋值

2、数据类型

a基本数据类型(int short long float double char byte boolean)

b引用数据类型(数组array 对象object 字符串string)

3、运算符

a算数运算符(+ - * / %) + 当加号两端有字符串时 会将其他类自动转为字符串类 最后进行字符串的拼接

b赋值运算符(= += -= *= /= %=)int a = 6; a+=6; === a=a+6 (++自增 --自减 前加加先自增在参与运算 后加加 先参与运算 在自增)

c、比较运算符 > < >= <= == != d、逻辑运算符 && || ! e、三目运算符 ?:

4、类型转换

a自动转换(两种类型相互兼容 目标类型大于源类型)b强制类型转换(两种类型相互兼容 目标类型小于源类型) 布尔类型不能做强制转换。

5、控制台输入(引用数据类型 Scanner s = new Scanner(System.in);)

6、循环

a、 if 语法 if(条件){条件为真时执行} else 就近if的取反 作用:1、逻辑更为清晰 2、节省运行时间成本

if的嵌套(满足一个条件的同时还得满足另外一个条件)

b、switch (key) { key指的是变量 case value: value变量的值 case后面也只能是值 不能是表达式

c、while循环 作用循环做件事 (int i = 1; //表达式1 循环初识值 while(i<11){ //表达式2 循环条件 循环体 表达式3 表达式4 自增 是循环结束的条件 执行的顺序 1,2,3,4,2,3,4,2,3,4...

dowhile 会直接执行一次 而while只要条件不满足就不会执行

d、 for循环(1、 int i=0;循环起始值那个2、 i<args.length 循环条件*3、 i++自增4、 循环体循环体执行顺序 1,2,4,3,2,4,3,2,4,3...) for循环嵌套

二、函数

a、public公有的 static静态 void返回类型(空)

main函数名 (String[] args 参数类型 参数) {函数体 功能体}

b、 封装一个功能 (一个函数 只做一个功能)

好处 1、减少代码冗余 2、可以放着不用

c、了解函数参数 形参 实参

d、了解递归递归

所谓的递归 就是自己调用自己

无穷递归(会使 内存溢出 所以一般在写递归时我们要加一出口)

三、数组

a、数组 存放相同数据类型的数据

定义数组 类型[] 数组名 = new 类型[n] n代表数组有n个数据

(定义 数组中的数据默认为0)

数据对应下标 下标从0开始 获取数组中的数据 数组名[下标]

然后讲了一个经典面试题 冒泡排序(比较相邻的元素。如果第一个比第二个大,

就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。

在这一点,最后的元素应该会是最大的数)

b、二维数组

定义:

int arr = new int3;// arr里面包含3个数组 每个数组

里面有四个元素上面的代码相当于定义了一个3*4的二维数组,即

二维数组的长度为3,二维数组中的每个元素又是一个长度为4的数组。

四、类和对象 a、通过类创建对象 Dog dog = new Dog(); //基于Dog类创建dog对象 b、类与对象的关系 类有一个(模板) -> 创建多个对象(实例) 类是对象的抽象,而对象是类的具体实例。 c、构造函数 有参构造和无参构造 this代表当前类 2、面向对象特性 a、封装 封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;在这个基础山引出了几大修饰符的区别。 b、继承 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法, 或子类从父类继承方法,使得子类具有父类相同的行为。 主要讲了继承中子类和父类创建过程的顺序。 3、修饰符 访问权限 类 包 子类 其他包 public ∨ ∨ ∨ ∨ protect ∨ ∨ ∨ ×(继承的类可以访问以及和private一样的权限) default ∨ ∨ × ×(包访问权限,即在整个包内均可被访问) private ∨ × × ×(除类型创建者和类型的内部方法之外的任何人都不能访问的元素) 4、方法重写 就是子类继承父类重写方法时返回值 参数类型 参数列表需相同 子类访问权限不能低于父类。 一、父级私有子类是否可以访问? 不可以访问,父类中private私有,只能在本类中访问,子类肯定访问不到,但是可以获取父类中get和set方法访问私有变量。 二、继承中的对象创建过程 a、如果子类没有构造方法,会执行父类构造方法, b、如果子类定义了构造方法,,则不论子类构造方法是有参数还是无参数,在创建子类的对象的时候,首先执行父类无参的构造方法,然后执行自己的构造方法(因为子类隐藏了一个super关键字,会先调用父类) 如果父类子类都有输出语句,则顺序为父类输出语句——>子类输出语句 也就是老师上课中输出语句为A->B->C c、若子类构造方法中第一行是有参数super,对super()里面传参则直接转到对应的有参父类构造方法中执行它。

五.多态 a、父类引用指向子类 向上转型 装箱 Animal a = new Dog(); 调用父类中的方法 但是如果子类中重写了父类中方法那么优先执行子类中的方法 b、父类引用指向子类 只可以调用父类中的属性和函数 如何让子类访问自己的属性和函数 向下转型 拆箱 Dog dog = (Dog)a; 2.抽象类 例如 :物本不该存在的对象,因为我们找动物只能找到动物的子类 找不到动物的对象 但是程序中我们还得用动物类作为我们子类的父亲 模拟现实世界 animal本不该被创建 a、抽象类 不可以被实例化 抽象方法 本不该被实现的方法 抽象类为不完整的类 无法独立存在 无法new对象 b、抽象类作用: 可以被子类继承 提供属性和方法 可声明引用 更自然的使用多态 Abstract 修饰方法 抽象方法 只需要定义即可 抽象类 中不一定都是都是抽象方法但是有抽象方法的类一定是抽象类 子类中必须实现父类中的所有抽象方法 3.static 静态属性 a、无论创建多少个对象 无论修改多少次 所有的对象所调用静态属性值都一样 静态属性 可以直接通过类名调用 b、static 修饰的函数为静态函数 静态函数只能访问访问静态函数,不能访问非静态函数 c、tatic中不能不能用this,super 不能访问非静态属性 d、静态函数可以被继承 但是不允许重写 e、静态函数也可以通过类名直接调用 4.接口:接口中默认的都是public abstract接口可以多实现 逗号隔开 implements 实现接口的类重写接口中的所有方法 5、final关键字 主要知道final修饰的时常量、修饰的类不能被继承、修饰的方法不能被重写.

六、内部类 在一个类的内部再定义一个类 a 、静态内部类不依赖于外部类的创建 直接使用即可 可以直接访问静态内部成员 b、局部内部类 定义在外部类的方法之中 2、基本数据类型和引用数据类型转换 注意Integer 3、String里的相关方法 getClass() 返回对象实际类型 返回对象地址或字符串或数字计算出来的十进制的值 字符串相关方法: charAt(index) 通过下标获取字符 (字符串相当于特殊的字符数组) contains(str) 判断字符串中是否包含字符串str toCharArray()转成字符数组 2、集合(主要讲Arraylist) ArrayList 是List的实现类 查询快 增删慢 效率快 线程不安全 数组 存放相同数据类型的容器 数组可以存放基本数据类型和引用数据类型 长度是固定的 集合 只能存放引用数据类型 它没有固定长度 Substring()方法 如果这里有一个数 指的是截取该数包括该数及后面的所有字符串 如果两个数 第一个指起点 第二个为终点但是不包含终点 返回的是截取后的字符串 遍历集合可以使用for i 增强for 迭代器。

posted @ 2021-11-25 09:44  苏unique  阅读(31)  评论(0)    收藏  举报