JavaSE回顾及巩固的自学之路(四)——————方法和数组,面向对象
今天是2018.03.31,emmmmmm。好像距离上一次写Javase回顾总结已经好久好久过去,差一点就以为要停更了,哈哈哈。
其实呢,最近是真的好忙(额,这段时间觉得自己一直在学习),因为刚刚开学,面临很多学科的学习压力,自己技术有不够,所以,只有不断的学习,现在已经进入了前端的轨道,前几天就已经进入到html,xml中dom和sax解析方式,JavaScript....
所以这边还得同时写Javaweb的学习总结,所以就忘了写javase了,在后续,我也会更努力的,接下来会写一些学习中的技术点教学。
那么今天就是主要回顾一下方法,和数组,二维数组,还有一个面向对象思想。
其实过去那么久了,我早就忘了方法撒的,讲了什么,但是要我理解,肯定是理解了。
那么方法是什么意思呢?在语言里,就是完成特定功能的代码块
其实也不能说是在语言里,只能说是在Java中,函数,成为方法,在其他语言就不一定了。
方法的格式:
修饰符 返回值类型 方法名(参数类型 参数名1, 参数类型 参数名2.....){
方法体语句;
return 返回值;
}
1.修饰符:在现在的了解,只有public static 。了解过,在后面还有各种私有类型啊。。啥的。
2.返回类型:也就是方法结果的数据类型,通常没有返回值就是void,
3.方法名:也就是该方法的一个代号,一个调用的id。
4.参数类型:也就是调用该方法传过来的参数所属类型。
5.参数名:也就是4中所声明的参数名称。
6.参数分类:
实参:实际上参与运算的数据
形参:方法上定义的,用于接收实际参数的变量(通常可以理解为调用完就会被内存释放的那种参数)
7.方法体语句:也就是实现功能的代码块
8.return:返回,结束的方法,通常在void返回类型中,没有return;
9.返回值:通过8中的return返回一个方法结果。
在方法中,需要有两个具体的值。也就是返回值的类型,结果的数据类型;还有参数的个数及对应的数据类型
当然,有了方法,就必须有方法的调用问题:在此有两种情况:一种就是有返回类型,一种没有返回类型
1.有明确返回值的方法:
当然还可以分为调用的情况:
a.单独调用,没有意义
b.输出调用,不怎么好,因为可以不需要进行进一步的操作。
c.赋值调用,推荐
2.void类型修饰的方法
此种方方法,没有返回值,通常用于单独调用
在运用方法中需要几个注意的地方:
1.方法不调用的话就不会执行;
2.方法之间的平级关系,不存在先后(除了开发者本身定义),不能嵌套定义(后期的递归将会打破这个概念);
3.方法定义,参数之间用 , 隔开(其实我觉得这个谁都知道)
4.方法在调用的时候,不用再从新定义参数类型,只需要传入相同类型的变量就好;
5.如果方法明确了返回值类型,就必须要有return返回;
在方法中,还存在一个方法重载的概念:在同一个类中,方法名相同,参数列表不同。与返回值无关。
参数列表不同包括:1.参数的个数不同;2.参数的对应的数据类型不同;
方法说完了。现在进入数组:
1.数组:存储同一种数据类型的多个元素的容器。(在集合中就可以存储不同的类型的元素,(其实所有的元素本质都是object))
2.特点:每一个元素都有编号,下标从0开始,最大的编号是长度-1.编号的专业术语叫:索引
3.格式:
a:数据类型[] 数组名;(我习惯用这种了)
b:数据类型 数组名[];
4.数组的初始化(所谓初始化,就是在内存中开辟空间)
a.动态初始化
给出长度,由系统给出默认值
例:int[] arr = new int[3];
b.静态初始化
给出值,系统决定长度
例:int[] arr = new int[]{1, 2, 3};
另一种写法:int[] arr = {1, 2, 3};
5.Java的内存分配(这个就有意思了)
a.栈:存储局部变量
b.堆:存储所有new出来的
c.方法区(面向对象中应该会详细)
d.本地方法区(系统相关)
e.寄存器(CPU使用)
注意:
a.局部变量 在方法定义中或者方法声明上定义的变量。
b.栈内存和堆内存的区别
栈:数据使用完毕,就会消失。(用完就扔,这孙子就是一个渣男)
堆:每一个new出来的对象都会有一个地址
每一个变量都会有默认值
1.byte,short,int,long——————0
2.float,double——————0.0
3.char——————'\u0000'
4.boolean——————false
5.引用类型——————null
数据使用完毕之后,一般都会在垃圾回收器空闲的时候回收,这就是Java的一大特点
6.数组内存图
A.一个数组
B.两个数组
C.三个数组(两个栈变量都指向同一个堆内存)
7.数组常见的一些运用
A.遍历:
方式1:
public static void printArray(int[] arr) {
for(int x=0; x<arr.length; x++) {
System.out.println(arr[x]);
}
}
方式2:
public static void printArray(int[] arr) {
System.out.print("[");
for(int x=0; x<arr.length; x++) {
if(x == arr.length-1) {
System.out.println(arr[x]+"]");
}else {
System.out.println(arr[x]+", ");
}
}
}
B:最值
最大值:
public static int getMax(int[] arr) {
int max = arr[0];
for(int x=1; x<arr.length; x++) {
if(arr[x] > max) {
max = arr[x];
}
}
return max;
}
最小值:
public static int getMin(int[] arr) {
int min = arr[0];
for(int x=1; x<arr.length; x++) {
if(arr[x] < min) {
min = arr[x];
}
}
return min;
}
C:逆序
方式1:
public static void reverse(int[] arr) {
for(int x=0; x<arr.length/2; x++) {
int temp = arr[x];
arr[x] = arr[arr.length-1-x];
arr[arr.length-1-x] = temp;
}
}
方式2:
public static void reverse(int[] arr) {
for(int start=0,end=arr.length-1; start<=end; start++,end--) {
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
}
D:查表
public static String getString(String[] strArray,int index) {
return strArray[index];
}
E:基本查找
方式1:
public static int getIndex(int[] arr,int value) {
for(int x=0; x<arr.length; x++) {
if(arr[x] == value) {
return x;
}
}
return -1;
}
方式2:
public static int getIndex(int[] arr,int value) {
int index = -1;
for(int x=0; x<arr.length; x++) {
if(arr[x] == value) {
index = x;
break;
}
}
return index;
}
二维数组(为什么只说二维数组呢?因为我相信你的大脑,听懂了二维,什么八维,九维都会举一反三)
1.它的元素就是每一个一维数组。
2.格式:
A.数据类型[][] 数组名 = new 数据类型[m][n];
B.数据类型[][] 数组名 = new 数据类型[m][];
C.数据类型[][] 数组名 = new 数据类型[][]{{...}, {...}, {...}};
D.数据类型[][] 数组名 = {{...}, {...}, {...}};
在Java中参数传递:参数传递一般有两种,一种是“传值”,另一种是“传地址值”。传值是指在调用方法时,把参数的值传递给方法,而传地址值则是给方法提供参数的地址值。Java中的参数传递方法都为传值调用。
其中:基本类型的传递,形式参数的改变不影响实际参数
引用类型的传递,形式参数的改变直接影响实际参数
有一个特殊问题:引用类型的参数传递传递的是内存地址值,str和str1指向的是同一个内存空间,str1将内存空间里面的内容改变后输出str也应该发生改变。但是str指向的内存空间里的内容“abc”并没有发生变化。
面向对象
1.面向对象:是基于面向过程的编程思想,如果我没记错的话是:OOP(简称,全拼是真的拼不出)
2.面向对象是思想特点:
i.是一种更符合人类思考习惯的思想
ii.把复杂的事情简单化
iii.让我们从执行者变成指挥者
3.面向对象举例:
A:面向过程体现:
动作:
1.打开冰箱门
2.装进大象
3.关闭冰箱门
所以我们执行这个3个动作就行了
B:面相对象:调用“大象装进冰箱”这个对象。
分析:面相对象是不管面相过程的三个步骤,因为这三个步骤已经被对象“大象装进冰箱”封装起来了,我们只管使用(调用),不关心具体实现。
4.类与对象
A.现实世界的事物
属性:事物的基本描述
行为:事物的功能
B.Java语言中最基本的单位是类。
C.类:
成员变量:事物的一些属性(列如:Student: age,name)
成员方法:事物的一些行为(列如:Student: void eat(){})
D.类:是一组相关的属性和行为的集合。是一个抽象的概念。
对象:是该类事物的具体存在,是一个具体的实例。(对象)
列如:动物:类
狗:对象
5.类的定义及其使用
A.类的定义:
成员变量:定义格式与变量一样,只是它存在于类中,方法外。
成员方法:定义格式与方法一样,只是非静态方法。
B:使用类的内容方法
1.想要使用,首先的创建一个对象
类名 对象名 = new 类名();
2.创建好了对象,就可以根据这个对象来调用它类中的方法,和变量了
对象名.成员变量名
对象名.成员方法()
6.Java中,开发,设计,特征
开发:就是不断的创建对象,通过对象调用功能
设计:就是管理和维护对象间的关系
特征:
封装,继承,多态(这就是Java这门语言的三大特征)
其实呢,最近是真的好忙(额,这段时间觉得自己一直在学习),因为刚刚开学,面临很多学科的学习压力,自己技术有不够,所以,只有不断的学习,现在已经进入了前端的轨道,前几天就已经进入到html,xml中dom和sax解析方式,JavaScript....
所以这边还得同时写Javaweb的学习总结,所以就忘了写javase了,在后续,我也会更努力的,接下来会写一些学习中的技术点教学。
那么今天就是主要回顾一下方法,和数组,二维数组,还有一个面向对象思想。
其实过去那么久了,我早就忘了方法撒的,讲了什么,但是要我理解,肯定是理解了。
那么方法是什么意思呢?在语言里,就是完成特定功能的代码块
其实也不能说是在语言里,只能说是在Java中,函数,成为方法,在其他语言就不一定了。
方法的格式:
修饰符 返回值类型 方法名(参数类型 参数名1, 参数类型 参数名2.....){
方法体语句;
return 返回值;
}
1.修饰符:在现在的了解,只有public static 。了解过,在后面还有各种私有类型啊。。啥的。
2.返回类型:也就是方法结果的数据类型,通常没有返回值就是void,
3.方法名:也就是该方法的一个代号,一个调用的id。
4.参数类型:也就是调用该方法传过来的参数所属类型。
5.参数名:也就是4中所声明的参数名称。
6.参数分类:
实参:实际上参与运算的数据
形参:方法上定义的,用于接收实际参数的变量(通常可以理解为调用完就会被内存释放的那种参数)
7.方法体语句:也就是实现功能的代码块
8.return:返回,结束的方法,通常在void返回类型中,没有return;
9.返回值:通过8中的return返回一个方法结果。
在方法中,需要有两个具体的值。也就是返回值的类型,结果的数据类型;还有参数的个数及对应的数据类型
当然,有了方法,就必须有方法的调用问题:在此有两种情况:一种就是有返回类型,一种没有返回类型
1.有明确返回值的方法:
当然还可以分为调用的情况:
a.单独调用,没有意义
b.输出调用,不怎么好,因为可以不需要进行进一步的操作。
c.赋值调用,推荐
2.void类型修饰的方法
此种方方法,没有返回值,通常用于单独调用
在运用方法中需要几个注意的地方:
1.方法不调用的话就不会执行;
2.方法之间的平级关系,不存在先后(除了开发者本身定义),不能嵌套定义(后期的递归将会打破这个概念);
3.方法定义,参数之间用 , 隔开(其实我觉得这个谁都知道)
4.方法在调用的时候,不用再从新定义参数类型,只需要传入相同类型的变量就好;
5.如果方法明确了返回值类型,就必须要有return返回;
在方法中,还存在一个方法重载的概念:在同一个类中,方法名相同,参数列表不同。与返回值无关。
参数列表不同包括:1.参数的个数不同;2.参数的对应的数据类型不同;
方法说完了。现在进入数组:
1.数组:存储同一种数据类型的多个元素的容器。(在集合中就可以存储不同的类型的元素,(其实所有的元素本质都是object))
2.特点:每一个元素都有编号,下标从0开始,最大的编号是长度-1.编号的专业术语叫:索引
3.格式:
a:数据类型[] 数组名;(我习惯用这种了)
b:数据类型 数组名[];
4.数组的初始化(所谓初始化,就是在内存中开辟空间)
a.动态初始化
给出长度,由系统给出默认值
例:int[] arr = new int[3];
b.静态初始化
给出值,系统决定长度
例:int[] arr = new int[]{1, 2, 3};
另一种写法:int[] arr = {1, 2, 3};
5.Java的内存分配(这个就有意思了)
a.栈:存储局部变量
b.堆:存储所有new出来的
c.方法区(面向对象中应该会详细)
d.本地方法区(系统相关)
e.寄存器(CPU使用)
注意:
a.局部变量 在方法定义中或者方法声明上定义的变量。
b.栈内存和堆内存的区别
栈:数据使用完毕,就会消失。(用完就扔,这孙子就是一个渣男)
堆:每一个new出来的对象都会有一个地址
每一个变量都会有默认值
1.byte,short,int,long——————0
2.float,double——————0.0
3.char——————'\u0000'
4.boolean——————false
5.引用类型——————null
数据使用完毕之后,一般都会在垃圾回收器空闲的时候回收,这就是Java的一大特点
6.数组内存图
A.一个数组
B.两个数组
C.三个数组(两个栈变量都指向同一个堆内存)
7.数组常见的一些运用
A.遍历:
方式1:
public static void printArray(int[] arr) {
for(int x=0; x<arr.length; x++) {
System.out.println(arr[x]);
}
}
方式2:
public static void printArray(int[] arr) {
System.out.print("[");
for(int x=0; x<arr.length; x++) {
if(x == arr.length-1) {
System.out.println(arr[x]+"]");
}else {
System.out.println(arr[x]+", ");
}
}
}
B:最值
最大值:
public static int getMax(int[] arr) {
int max = arr[0];
for(int x=1; x<arr.length; x++) {
if(arr[x] > max) {
max = arr[x];
}
}
return max;
}
最小值:
public static int getMin(int[] arr) {
int min = arr[0];
for(int x=1; x<arr.length; x++) {
if(arr[x] < min) {
min = arr[x];
}
}
return min;
}
C:逆序
方式1:
public static void reverse(int[] arr) {
for(int x=0; x<arr.length/2; x++) {
int temp = arr[x];
arr[x] = arr[arr.length-1-x];
arr[arr.length-1-x] = temp;
}
}
方式2:
public static void reverse(int[] arr) {
for(int start=0,end=arr.length-1; start<=end; start++,end--) {
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
}
D:查表
public static String getString(String[] strArray,int index) {
return strArray[index];
}
E:基本查找
方式1:
public static int getIndex(int[] arr,int value) {
for(int x=0; x<arr.length; x++) {
if(arr[x] == value) {
return x;
}
}
return -1;
}
方式2:
public static int getIndex(int[] arr,int value) {
int index = -1;
for(int x=0; x<arr.length; x++) {
if(arr[x] == value) {
index = x;
break;
}
}
return index;
}
二维数组(为什么只说二维数组呢?因为我相信你的大脑,听懂了二维,什么八维,九维都会举一反三)
1.它的元素就是每一个一维数组。
2.格式:
A.数据类型[][] 数组名 = new 数据类型[m][n];
B.数据类型[][] 数组名 = new 数据类型[m][];
C.数据类型[][] 数组名 = new 数据类型[][]{{...}, {...}, {...}};
D.数据类型[][] 数组名 = {{...}, {...}, {...}};
在Java中参数传递:参数传递一般有两种,一种是“传值”,另一种是“传地址值”。传值是指在调用方法时,把参数的值传递给方法,而传地址值则是给方法提供参数的地址值。Java中的参数传递方法都为传值调用。
其中:基本类型的传递,形式参数的改变不影响实际参数
引用类型的传递,形式参数的改变直接影响实际参数
有一个特殊问题:引用类型的参数传递传递的是内存地址值,str和str1指向的是同一个内存空间,str1将内存空间里面的内容改变后输出str也应该发生改变。但是str指向的内存空间里的内容“abc”并没有发生变化。
面向对象
1.面向对象:是基于面向过程的编程思想,如果我没记错的话是:OOP(简称,全拼是真的拼不出)
2.面向对象是思想特点:
i.是一种更符合人类思考习惯的思想
ii.把复杂的事情简单化
iii.让我们从执行者变成指挥者
3.面向对象举例:
A:面向过程体现:
动作:
1.打开冰箱门
2.装进大象
3.关闭冰箱门
所以我们执行这个3个动作就行了
B:面相对象:调用“大象装进冰箱”这个对象。
分析:面相对象是不管面相过程的三个步骤,因为这三个步骤已经被对象“大象装进冰箱”封装起来了,我们只管使用(调用),不关心具体实现。
4.类与对象
A.现实世界的事物
属性:事物的基本描述
行为:事物的功能
B.Java语言中最基本的单位是类。
C.类:
成员变量:事物的一些属性(列如:Student: age,name)
成员方法:事物的一些行为(列如:Student: void eat(){})
D.类:是一组相关的属性和行为的集合。是一个抽象的概念。
对象:是该类事物的具体存在,是一个具体的实例。(对象)
列如:动物:类
狗:对象
5.类的定义及其使用
A.类的定义:
成员变量:定义格式与变量一样,只是它存在于类中,方法外。
成员方法:定义格式与方法一样,只是非静态方法。
B:使用类的内容方法
1.想要使用,首先的创建一个对象
类名 对象名 = new 类名();
2.创建好了对象,就可以根据这个对象来调用它类中的方法,和变量了
对象名.成员变量名
对象名.成员方法()
6.Java中,开发,设计,特征
开发:就是不断的创建对象,通过对象调用功能
设计:就是管理和维护对象间的关系
特征:
封装,继承,多态(这就是Java这门语言的三大特征)