一、方法
java对方法和python对方法做对比,因为这两个语言差别很大,比如java中方法依赖类,而python中方法可以单独存在与py文件中。他是一段用来完成特定功能对代码片段。
1、方法的定义格式:
【修饰符】 【static】返回值类型 方法名(【形式参数。。。】)
{
方法体;
return 返回值;
}
2、方法的好处
- 提高代码的复用性,抽取复用代码成方法
- 提高代码的维护性,实现相对独立的逻辑
- 可以更好的封装和私有化
3、修饰符
修饰符 | 当前类 | 相同包 | 子类 | 其他包 |
---|---|---|---|---|
public | ok | ok | ok | ok |
protetcted | ok | ok | ok | no |
default | ok | ok | no | no |
private | ok | no | no | no |
Java访问修饰符包括private,default,protected和public。含义分别表示私有的,默认的,受保护的和公有的访问修饰符。这些访问修饰符既可以修饰类中的属性,又可以修饰类中的方法,而public和default还可以修饰类。在同一个java文件里,公有类有且仅有一个,并且该文件命名为类名.java。
4、方法中术语
修饰符:public、static修饰的方法属于类,可以直接{类.方法名}调用。
返回值类型:有返回值和返回值的类型一致,没有返回值使用void。
方法名称:使用驼峰命名法。
形式参数:仅仅是占位而已。
方法签名:
方法体:方法的{}中的变量,表示具体完成功能的代码。
返回值:在方法内部,使用return关键字:
功能:给调用者返回一个结果值,此时方法不能使用void修饰。
功能:结束当前方法。
实际参数:调用者在调用某个方法时实际传递的参数值。
5、方法的从载
定义:如果有两个方法的方法名相同,但参数不一致,那么可以说一个方法是另一个方法的重载。
两同:同类中,方法名相同
一不同:参数列表不同(参数类型,参数个数,参数顺序)
6、方法的递归
递归需要满足2个条件:
1)反复执行的操作(自己调用自己)
2)有跳出反复执行的出口(递归出口)
举例:汉诺塔
总结:方法是java 的重要组成部分。为了实现某个功能, 将一类操作封装在方法里,方便其他模块调用。java的方法语法严格,写法多样,相应的性能也就不同,一个经验丰富的程序员写的方法不光可用性比较高,而且性能也高,便于维护。
二、JVM内存模型
程序计数器:
本地方法栈:
堆:
栈:
方法区:
Gc(传送门:垃圾回收器):是Java语言的核心技术之一, 在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给了JVM来处理。
总结:java被程序员广泛使用,其中很重要的一个原因就是java的虚拟机。各种数据结构,垃圾的处理,都是虚拟机完成的。单独拿出来也是一门很大的课程,想详细了解这个博客写的就可以作为入门:Java虚拟机。
三、数组
1、什么是数组:
数组指一组数据的集合,数组中的每个数据被称作元素。
2、数组的定义:
1):数组元素的类型【】 数组名;
例如:int [] ages;
2):数组元素的类型 数组名 【】;
例如:int ages[];
3、数组的初始化:
int[] news = new int[]{1,2,3};//1、静态正常写法
int[] news1 = {1,2,3};//2、静态简单写法
int[] news2 = new int[5];动态初始化
*1、正常写法可以先定义,后初始化。
*2、简单写法不能后初始化,因为他不知道数据类型。
数组声明分成三步操作:
1、声明int类型数组 news:int[] news
2、初始化数组:new int[] {1, 2, 3, 4}
3、把初始化的数据赋值给news变量
4、遍历数组:
// 遍历数组的元素
for(int index = 0;index < ages.length;index ++)
{
System.out.println(ages[index]);
}
总结:java数组名字表示的是地址值,需要专门遍历数组。
5、数组操作常见异常:
1)空引用异常:没有初始化就被调用。
2)索引越界异常:索引为负数或者超出数组长度 - 1。
总结:由于java特殊的储存机制,数组索引越界会导致异常出现
6、(蒜法)求数组的最大值和最小值
// 获得数组最大元素
static int getMax(int[] ages)
{
int max = ages[0];
for(int i = 0;i < ages.length;i ++)
{
if(ages[i] > max)
{
max = ages[i];
}
}
return max;
}
// 获得数组最小元素
static int getMin(int[] ages)
{
int min = ages[0];
for(int i = 0;i < ages.length;i ++)
{
if(ages[i] < min)
{
min = ages[i];
}
}
return min;
}
7、二维数组
二维数组定义和初始化:
例:int[][] ages = new int[][]{{1, 2, 3}, {4, 5, 6},{7, 8, 9}};
总结:java二维数组定义有三种方式,有固定的写法,且长度不可变,这一点和其他语言相比体现了java的严谨性。
8、操作数组(算法)
- 元素拷贝
- 找最大数
- 冒泡排序
- 选择排序
- 二分法查找
- java内置工具类
总结:java数组的概念和python有些差别,相同点是都是用来存储数据的容器,不同点是java数组更为严格,数组的长度和元素类型在声明的时候就已经确定,一旦确定就无法修改,而python的元素类型相对比较开放。使用熟练后你的代码不管是python还是Java都会信手拈来。语言永远只是开发者的工具,用什么语言不重要,关键是写它的人。
多看看源代码,学习编程的思想