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