java
2020-09-18 23:37:28 0 举报
AI智能生成
java基础
作者其他创作
大纲/内容
数组
特点
1.数组是一种引用类型
2.数组当中的数据,类型必须统一
3.数组的长度在程序运行期间不可改变
一维数组
在内存当中创建一个数组,并且向其中赋与了一些默认值
常见初始化方式
动态初始化
动态初始化(指定长度)
格式:数据类型[] 数组名称 =new 数据类型[数组长度];
例如: int[] array = new int[10];
拆分格式:int[] array;
array = new int [5];
格式:数据类型[] 数组名称 =new 数据类型[数组长度];
例如: int[] array = new int[10];
拆分格式:int[] array;
array = new int [5];
特点
动态初始化的时候其中的元素将会自动拥有一个默认值
例如:整数类型,默认为0
浮点类型,默认为0.0
字符类型,默认为\uoo0
布尔类型,默认为false
引用类型,默认为nall
例如:整数类型,默认为0
浮点类型,默认为0.0
字符类型,默认为\uoo0
布尔类型,默认为false
引用类型,默认为nall
静态初始化
静态初始化(指定内容)
格式:数据类型[] 数组名称 = new 数据类型[]{元素1,元素2,.....}
例如:int[] array = new int[]{10,20}
拆分格式:int[] array;
array = {10,20};
静态初始化的省略格式
int[] arry = {10,20};
格式:数据类型[] 数组名称 = new 数据类型[]{元素1,元素2,.....}
例如:int[] array = new int[]{10,20}
拆分格式:int[] array;
array = {10,20};
静态初始化的省略格式
int[] arry = {10,20};
注意事项:
1.静态初始化没有直接指定长度,但是仍然会自动推算得到长度
2.静态初始化和动态初始化可以拆分成两步骤
3.静态初始化一但使用省略格式,就不能拆分成两个步骤
4.静态初始化也有默认值,只不过马上被赋值了
1.静态初始化没有直接指定长度,但是仍然会自动推算得到长度
2.静态初始化和动态初始化可以拆分成两步骤
3.静态初始化一但使用省略格式,就不能拆分成两个步骤
4.静态初始化也有默认值,只不过马上被赋值了
二维数组
二维数组本质上是以数组作为数组的元素,即“数组的数组“
常见初始方式
动态初始化
数据类型[][] 数组名 = new 数据类型[m][n] (主要用这个格式)
--
格式:int[][] arry = new int[3][2]
--
格式:int[][] arry = new int[3][2]
数据类型 数组名[][] =new 数据类型[m][n]
--
格式:int array[][] = new int[3][2]
--
格式:int array[][] = new int[3][2]
数据类型[] 数组名[] = new 数据类型[m][n]
--
格式:int[] array[] = new int[3][2]
--
格式:int[] array[] = new int[3][2]
静态初始化
数据类型[][] 数组名 = {数据};<br>--<br>int[][] array = {{10,20,30},{20,30},{10,20,30}};
异常
数组索引越界异常
(IndexOutOfBoundsException)
(IndexOutOfBoundsException)
如果访问数组元素的时候,索引编号不存在,那么将会发生数组索引越界异常
空指针异常
(NullPointerException)
(NullPointerException)
如果只是赋值了一个null,没有进行new创建那么将会发生空指针异常
例如:
int[] array = null; //如果单独一个null是不行的
array = new int[3]; //要补上new就可以了
例如:
int[] array = null; //如果单独一个null是不行的
array = new int[3]; //要补上new就可以了
方法
方法的三要素
返回值类型:给方法定义的返回值类型
方法名称:这个方法的名称
参数列表:给方法传递的值(也可以不给)
方法重载
说明
方法的重载(Over Load):多个方法的名称一样,但是参数列表不一样.
好处
只需要一个记住唯一一个方法名称,就可以实现类似的多个功能
练习题
子主题
构造方法
用途
专门用来创建对象的方法,当我们通过关键字new来创建对象时,其实就是在调用构造方法
格式
public 类名称(参数类型,参数名称){
方法体
}
方法体
}
注意点
1.构造方法的名称必须和所在的类名称完全一样,就连大小写也要一样
2.构造方法不需要返回值类型,连void都不写
3.构造方法不能return一个具体的返回值
4.如果没有编写任何构造方法,那么编译器将会默认赠送一个构造方法,没有参数,方法体什么事情都不做
5.如果编写了一个构造方法编译器就不会赠送
注意事项
1.方法应该定义在类当中,但是方法不能嵌套
2.方法定义的前后顺序无所谓
3.方法定义之后不会执行,如果希望执行,一定要调用,单独调用,打印调用,赋值调用
4.如果方法有返回值,那么必须“return 返回值”,不能没有
5.return后面的返回值数据,必须和方法的返回值类型一样,对应起来
6.对于一个void没有返回值的方法,不能写return后面的返回值,只能写return自己
7。对于方法当中最后一行的return可以省略不写
常见问题
<font color="#c41230"><b><br>方法的形式参数是类名的时候如何调用? </b></font><br><font color="#c41230">——————</font><br><ul><li><font color="#000000">方法的参数是类名public static void print(Dog dog){} <br></font></li><li><font color="#000000">如果你看到了一个方法的形式参数是一个类类型(引用类型)<br></font></li><li><font color="#000000">调用方法的时候其实需要的是该类的对象,如:print(引用的名称)<br></font><br></li></ul>
类和面向对象
面向对象和面向过程的区别
面向对象
当需要实现一个功能的时候,不关心具体的步骤,而且找一个以经具有该功能的人
面向过程
当需要实现一个功能的时候,每一个具体的步骤都要亲力亲为
类
定义
是一组相关属性和行为的集合,可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该事物
属性:就是该事物的状态信息
行为:就是该事物能够做什么
例如
小猫
属性:名字,体重,年龄,颜色
行为:走,跑,叫
属性:名字,体重,年龄,颜色
行为:走,跑,叫
定义类
定义一个类要有:
成员变量(属性):和以前的定义变量几乎一样的,只是位置发生了变化。在类中,方法外
成员方法(行为):和以前定义的方法几乎一样的,只不过把static去掉。
成员变量(属性):和以前的定义变量几乎一样的,只是位置发生了变化。在类中,方法外
成员方法(行为):和以前定义的方法几乎一样的,只不过把static去掉。
局部变量和成员变量的区别
1.定义的位置不一样【重点】
局部变量:在方法内部
成员变量:在方方法外部,直接写在类当中
局部变量:在方法内部
成员变量:在方方法外部,直接写在类当中
2:作用范围不一样【重点】
局部变量:只有方法当中才可以使用,出来方法就不能再用
成员变量:整个类全部都可以通用
---
注意:当方法内局部变量和成员变量重名时,根据“就近原则”优先使用局部变量
如果想调用成员变量要在变量前加this
--
格式:this.变量名
局部变量:只有方法当中才可以使用,出来方法就不能再用
成员变量:整个类全部都可以通用
---
注意:当方法内局部变量和成员变量重名时,根据“就近原则”优先使用局部变量
如果想调用成员变量要在变量前加this
--
格式:this.变量名
3.默认值不一样【重点】
局部变量:没有默认值,如果想要使用,必须手动进行赋值
成员变量:如果没有赋值,会有默认值,规定和数组一样
局部变量:没有默认值,如果想要使用,必须手动进行赋值
成员变量:如果没有赋值,会有默认值,规定和数组一样
4.内存位置不一样
局部变量:位于栈内存
成员变量:位于堆内存
局部变量:位于栈内存
成员变量:位于堆内存
5.生命周期不一样
局部变量:随着方法进栈而诞生,随着方法出栈而消失
成员变量:随着对象创建而诞生,随着对象被垃圾回收而消失
局部变量:随着方法进栈而诞生,随着方法出栈而消失
成员变量:随着对象创建而诞生,随着对象被垃圾回收而消失
格式:
public class ClassName{
成员变量;
成员方法;
}
public class ClassName{
成员变量;
成员方法;
}
使用类
导包
就是指出需要使用的类,在什么位置
格式:
import 包名称,类名称;
----
注意:和当前类位于同一个包的时候,可以省略导入
import 包名称,类名称;
----
注意:和当前类位于同一个包的时候,可以省略导入
创建
格式:
————————
类名称 对象名=new 类名称()
————————
类名称 对象名=new 类名称()
使用
使用成员变量: 对象名.成员变量名
使用成员方法: 对象名.成员方法(参数)
使用成员方法: 对象名.成员方法(参数)
常用的类
Scanner
功能
可以实现键盘输入数据,到程序当中
导包
import 包路径.类名称
---
---
如果需要使用的目标类,和当前类位于同一个包下,则可以省略导包语句不写
只有java.lang包下的内容不需要导包,其他的包都需要import语句
---
---
如果需要使用的目标类,和当前类位于同一个包下,则可以省略导包语句不写
只有java.lang包下的内容不需要导包,其他的包都需要import语句
创建
类名称 对象名=new 类名称(System.in)
使用
对象名.成员方法名()
---
获取键盘输入
int类型: int num = 对象名.nextInt();
String类型:String srt = 对象名.nextString()
---
获取键盘输入
int类型: int num = 对象名.nextInt();
String类型:String srt = 对象名.nextString()
对象
定义
是以类事物的具体体现,对象是类的一个实例(对象并不是找个女朋友),必须具备该类事物的属性和行为
匿名对象
面向对象三大特性
封装
概念
是指<font color="#c41230">隐藏对象的属性和实现细节</font>,仅对外提供公共<font color="#c41230">public访问方式</font>。 <br>
好处
<font color="#c41230">隐藏实现</font>细节,提供<font color="#c41230">公共的访问</font>方式 <br>
提高了代码的<font color="#c41230">复用性和安全性</font>。 <br>
封装原则
封装原则将不需要对外提供的内容都隐藏起来
把<font color="#c41230">属性隐藏</font>,提供公共方法对其访问
特点
1.方法就是一种封装
2.关键字private也是一种封装
private
private(私有)关键字特点<br><ul><li>是一个权限修饰符 <br></li><li>可以修饰成员变量和成员方法<br></li><li>被其修饰的成员只能在本类中被访问<br>---</li></ul>当成员变量用private修饰表示外界不能访问<br>案例的解决方法<br><ul><li>把成员变量用private修饰<br></li><li>提供对应的getXxx()和setXxx()方法<br></li></ul>注意:get和set后面的字母一般都用大写 <br>
继承
多态
类和对象的关系
类是对一类事物的描述,是抽象的
对象是一类事物的实例,是具体的
类是对象的模板,对象是实体
内存
五大内存空间划分
栈(stack)
特点
存放的都是方法种的局部变量,方法的运行一定要在栈当中
局部变量:方法的参数或者是方法()内部的变量
作用域:一旦超出作用域,立刻从栈内存当中消失
堆(heap)
特点
凡是new出来的东西,都是在堆内存中
堆内存里面的东西都有一个地址值:16进制
堆内存里面的数据,都有默认值。规则
整形 默认为0
浮点型 默认为0.0
字符型 默认为‘\u000’
布尔型 默认为false
引用类型 默认为null
整形 默认为0
浮点型 默认为0.0
字符型 默认为‘\u000’
布尔型 默认为false
引用类型 默认为null
方法区(Method Area)
特点
存储class相关信息,包括方法信息
本地方法栈
特点
与操作系统相关
寄存器(pc Register)
特点
与cpu相关
基本类型(传值)和引用数据类型(传地址)有哪些
<font color="#381e11">基本数据类型:byte,short,int,long,float,double,boolean,char</font>
<font color="#000000">引用类型有:数组,类,接口,枚举</font>
0 条评论
下一页
为你推荐
查看更多