学习Java的第二周

1.嵌套循环
1.1 概念:在一个完整的循环当中,嵌套另一个完整的循环结构。
1.2 经验:
1).打印图形:外层控制行数、内层控制列数。
2).其他: 外层控制循环次数、内层控制单次循环操作。

函数

1.函数的基础
1.1 概念:实现特定功能的一段代码,可反复使用。
1.2 定义语法:
public static void 函数名(){
函数体;
}
1.3 经验:将需要在多个位置重复使用的一-组代码,定义在函数内。
1.4 函数定义位置:函数定义要与主函数并列
1.5 函数的调用:在需要执行函数代码的位置,通过函数名称进行调用
2.函数的参数
2.1 概念:调用函数时所传入的数据
2.2 形式参数:定义语法
public static void 函数名称 ( 形式参数 ) { //局部变量的声明

		}

2.3 实际参数:定义语法
函数名称( 实际参数 ); //为形式参数赋值

  1. 补充:
    3.1 == 比较的是地址,不是内容。所以当比较字符串时,==不够准确。
    3.2 比较字符串时,应使用 s1.equals(s2) ,可准确的比较字符串内容。
    3.3 当比较两个字符串不相同时,可使用 !s1.equals(s2)。 !(逻辑运算符:非)代表“不是”

4.函数的返回值与返回值类型
Public static 返回值类型 函数名(){ //返回值类型可以是基本数据类型和引用类型

Return 返回值;
}
在这里插入图片描述
5.return关键字
5.1 一个函数只能有一个返回值,在分支结构中,每一个分支都需要有return
5.2 return的两种用法:
应用在具有返回值类型的函数中:
return value; //表示结束当前函数,并伴有返回值,返回到函数调用处。
应用在没有返回值类型(void) 的函数中:
return; //表示结束当前函数,直接返回到函数调用处。
6.注意:一个类中可以定义多个函数,函数之间属于并列关系,不可嵌套。
经验:一个函数只做一件事。
好处:
减少代码冗余。
提高复用性。
提高可读性。
提高可维护性。
方便分工合作。
7.函数的递归
实际开发中,递归可以解决具有既定规律的特定问题。
何时使用递归?
当需要解决的问题可以拆分成若千个小问题,大小问题的解决方法相同。
有固定规律,函数中自已调用自已。
如何正确使用递归?
设置有效的出口条件,避免无穷递归。
注意:所有能以递归解决的问题,循环都可以解决。当解决复杂问题时,递归的实现方式更为简单。
在这里插入图片描述

数组

1.数组的概念:一组连续的存储空间, 存储多个相同数据类型的值。
2.数组的创建语法:
2.1 先声明、再分配空间:
数据类型[] 数组名;
数组名= new数据类型[长度];
2.2声明并分配空间:
数据类型[] 数组名= new数据类型[长度];
2.3声明并赋值(繁)
数据类型[] 数组名= new数据类型[]{value1,vale2.val.3…};
2.4声明并赋值(简) :
数据类型[] 数组名= {value1,valu2,ale3…}; //显示初始化,注意:不可换行

3.数组的使用
数组中的每个数据格被称为“数组元素”。
对每个元素进行赋值或取值的操作被称为“元素的访问”。
访问元素时,需要使用“下标”(从0开始,依次+1,自动生成)。
访问的语法:数组名[下标]; //例如存: a[0]=10; 取: a[0];
数组下标:范围是1-数组的长度-1。数组的长度(数组名.length)
访问无效下标会导致java.lang .ArrayIndexOutOfBoundsException
4.数组的默认值
整数:0
小数:0.0
字符:\u0000(空字符)
布尔:false
其他:null
5.数组的遍历
遍历:从头至尾,逐一-对数组的每个元素进行访问。
实例: int[] arr = {11,22,33,44,55,66};
for(int i = 0;i<arr.length;i++){
System.out.println(arr[i]);
}
6.补充
语法层面:硬性要求
一套:《Java语言规范》:规定了什么,就能用什么。没有规定的,绝不能用。
一套:《Java虚拟机规范》:规定了怎么用,就支持怎么用,没有规定的,随便用。(支持自我创造)

7.数组的扩容

创建数组时,必须显示指定长度,并在创建之后不可更改长度。
扩容的思路:
创建大于原数组长度的新数组。
将原数组中的元素依次复制到新数组中。
7.1 数组扩容的方法
(1)for循环实现
int[] a = {10,20,30,40,50};
int a1 = new int[a.length * 2];
for(int i =0;i<a.length;i++){
a1[i] = a[i]; }
(2)System.Arraycopy(a,num1,a1,num2,l);
a :原数组 a1:目标数组 num1:原数组的起始下标 num2:目标数组的起始下标 l:要复制的元素的个数
(3)先导入java.util.Arrars;
int[] a = {10,20,30,40,50};
int[] a1 = Arrays.copyOf(a,6);
8.地址替换
在这里插入图片描述

	8.1.	基本数据类型的变量存储的是值
	8.2.	引用数据类型的变量存储的是地址

	8.3.	nums = newNums; //将新数组的地址,赋值给nums变量,进而在后续操作nums时,则操作长度更大的新数组。

9.数组类型的参数
9.1 基本数据类型的参数是传入的值,一方改变另一方不受影响
9.2 引用数据类型的参数是传入的地址,一方改变另一方也随着改变
10.可变长参数:
10.1. 概念:可接收多个同类型实参,个数不限,使用方式与数组相同。
10.2. 语法:数据类型…形参名//必须定义在形参列表的最后,且只能有一个,支持0~N个参数。
int…= int[]
String… = String[]
char… = char[]
double… = double[]
method(x , xx[] , xx… );//可变长参数,是对数组的一种便利写法的补充(80%的场景用数组,20%的场 景用可变长参数)
实例:
传入的实参可以为m(1,2,23,3,4,5)或者m(arr)//arr为定义的数组
Public static void m(int…)
11.排序:
11.1. 冒泡排序:
相邻的两个值比较大小,互换位置。比如第一个值和第二个值比完后第二个值然后再和第三个比。。。。按照给定的if判断条件进行位置的互换。
记忆: 外层length-1 ;内层length -1-i
补充:嵌套循环约定俗称的变量命名,一重循环 i; 二重循环j;三重循环k;
11.2 选择排序:
1).固定值与其他值比较大小,互换位置。现将第一个值和其他后面各个值比较如果第一个值大于后面的某个值,那就将它两个调换位置,继续向后比较,这样循环一次的结果就是吧最小的值移到了最前面。
2).记忆:外层length-1 ;同时外层i作为固定值,内层的j=i+1 作为其他值的起始
12. 二维数组:
12.1 概念:一维数组中的一维数组,数组中的元素,还是数组。
12.2 语法:
先声明、再分配空间:
数据类型[][] 数组名;
数组名= new数据类型[高维长度][低维长度];
声明并分配空间: .
数据类型[][] 数组名= new数据类型[高维长度][低维长度];
声明并赋值(繁):
数据类型[][] 数组名= new数据类型[高维长度][]; //不规则数组, 自行new低维数组,这时候高维数组里面存的不是低纬数组的地址 而是null,前面数组的默认值里面提到的引用类型默认值为null
声明并赋值(简) :
数据类型[][] 数组名= { {v1,v2,v3},{v4,v5},{v6,v7,v8,v9} }; // 显示初始化

12.3	注意:高维数组中的每一个元素,保存了低维数组的地址。访问array[0]等价于在访问0x0000A111("二维数组的内存分配图")

在这里插入图片描述
二维数组内存储情况

	Eclipse工具的基本使用:
	
	修改编辑字体:windows -> Preferences -> General -> Appearance -> Colors And Fonts -> Basic -> Text Font 
	修改输出字体:windows -> Preferences -> General -> Appearance -> Colors And Fonts -> Debug ->
	重置窗口布局:windows -> Perspective -> Reset Perspective 

面向对象

1.面向对象概述
程序的概念:
I. 程序是为了模拟现实世界、解决现实问题而使用计算机语言编写的指令集合。
1.2. 现实世界组成:
I. 程序员眼中,世界是由无数个对象组成的。
1.3. 什么是对象:
I. 一切客观存在的事物都是对象,万物皆对象。
II. 初期:看得见、摸得着、并真实存在,都是对象。
1.4. 对象有什么:
I. 任何对象,一定有自己的特征和行为。
1.5. 特征和行为:
I. 特征:称为属性,一般为名词,代表对象都有什么。
II. 行为:称为方法,一般为动词,代表对象能做什么。

1.6.	程序中的对象:
	I.	程序如何模拟现实世界?
		1).	现实世界中,都是对象,程序中也应有对象。
		2).	程序当中必须具有和现实中相同的对象,用以模拟。
		3).	使用程序中的对象,代表现实中的对象,并执行操作,解决现实问题。

		现实与程序:
		1).	现实中的对象,来自于模板,通过模板造出来的实体,即是现实的对象。
		2).	程序中的对象,来自于模板(“类”),通过类造出来的实体,即是程序中的对象。
  1. 定义类、创建对象
    类名一定要清晰准确的表达出是什么类,
    对象是类的一个实例

  2. 类与对象的关系:
    I. 类:定义了对象应具有的特征和行为,类是对象的模板。
    II. 对象:拥有多个特征和行为的实体,对象是类的实例。

    PS:
    	属性、实例变量、成员变量,三者等价
    	实例方法、成员方法,二者等价
    	reference - 引用、句柄、指针
    

4.实例变量与局部变量的区别

在这里插入图片描述

发布了4 篇原创文章 · 获赞 0 · 访问量 248

猜你喜欢

转载自blog.csdn.net/weixin_44077166/article/details/104318176