java基础下

1.顺序结构

如果代码里没有流程控制,程序是至上而下一行一行执行的,一条语句执行完之后继续执行下一条语句,直到程序的最后。

2.条件语句之if

三种格式:
if(条件表达式)
{
执行语句;
}

if(条件表达式)
{
执行语句;
}
else
{
执行语句;
}

if(条件表达式)
{
执行语句;
}
else if (条件表达式)
{
执行语句;
}
……
else
{
执行语句;
}

3.条件语句之switch

格式:
switch(表达式)
{
case 表达式可能的结果值1:
执行语句;
break;
case 表达式可能的结果值2:
执行语句;
break;
...
default:
执行语句;
break;//一般不写
}

switch语句选择的类型只有四种:byte、short、int 、char。(java5之前)。还支持 enum(jdk5), String(jdk7);
* case之间与default没有顺序。先执行第一个case,都没有匹配的case值执行default。
* 结束switch语句的两种情况:遇到break,switch语句执行结束。
* 如果匹配的case或者default没有对应的break,那么程序会从第一次匹配的case语句开始继续向下执行,运行可以执行的语句,直到遇到break或者switch结束为止。

4.循环结构

1. while:事先不需要知道循环执行多少次;
    * while语句
        格式:
        while(条件表达式值为true)
        {
        	执行语句;
        }

2. do  while:同上,只是至少要执行一次(先做,后判断);
    * do while语句
        格式:
        do
        {
        	执行语句;
        }while(条件表达式值为true);

3. for:需要知道循环次数;
      格式:
        for(初始化表达式(1);循环条件表达式(2);循环后的操作表达式(3))
        {
        		执行语句;(4)
        }
        执行顺序:(1) → (2) → (4) → (3) → (2) → (4) → (3)

5.流程控制1

break语句、 continue语句;

break:终止该层循环;
continue:跳过该层循环

注:
①:若这两个语句离开应用范围,存在是没有意义的。
②:这个两个语句后面都能有语句,因为执行不到。
③:continue语句是跳过本次循环,继续下次循环。
④:标签的出现,可以让这两个语句作用于指定的循环。

6.流程控制2

使用循环标签;
在多层嵌套循环中,终止/跳过标签标记的外层循环的执行;
break <标签> 或 continue <标签>;
使用return 结束循环语句所在的方法;

7.方法(Method)

什么是方法?
一段可重复使用的代码段;
程序中完成独立功能的一段代码的集合。
Java中方法的格式:

[修饰符] 返回值类型 方法名([参数类型 形式参数1,参数类型 形式参数2,……])
{
执行语句; [return 返回值;]
}

参数列表(参数的类型 ,参数的个数,参数的顺序)

形式参数:在方法被调用时用于接收外界输入的数据。
实参:调用方法时实际传给方法的数据。
返回值:方法在执行完毕后返还给调用它的环境的数据。
返回值类型:事先约定的返回值的数据类型,如无返回值,必须给出返回类型 void。
方法签名:方法名 和 方法的参数列表(能区别方法);
java语言中调用方法:对象名.方法名(实参列表)。
实参的数目、数据类型和次序必须和所调用方法声明的形参列表匹配。
return 语句终止方法的运行并指定要返回的数据。

方法的特点:
它可以实现独立的功能;
必须定义在类里面;
它只有被调用才会执行;
它可以被重复使用;
方法结束后方法里的对象失去引用;

如何定义一个功能,并通过方法体现出来:
明确该功能运算后的结果.明确返回值类型;
明确在实现该功能过程中是否有未知内容参与运算,确定参数列表;

局部变量的初始化和内存中的运行机制:
局部变量必须先初始化再使用,这里的初始化其实就是在为其分配内存;
局部变量总是保存在其所在方法的栈内存里面,若:
基本类型:变量的值直接保存在变量的内存中;
引用类型:存放该变量实际引用对象或数组的地址;
栈里面的变量无须系统去垃圾回收,栈内存的变量会随着方法或代码块的运行结束而结束;

编程规范说明:
方法名不能使用关键字和保留字;
回忆类名的定义规范:
单词的首字母大写,采用驼峰式;
由有实际意义的名词或名词短语构成:
如:Student, StudentScore,
方法名规范:
第一个单词的首字母小写,采用驼峰式;
由有实际意义的动词或动词短语:
如:playGame,grow

8.方法的重载(Overload)

概念:
在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型或参数顺序不同即可。
存在的原因:
屏蔽了一个对象的同一类方法由于参数不同所造成的差异。
特点:
与返回值类型无关,只看参数列表。

法则:两同,一不同:
同一个类中方法名相同;
参数列表不同:(参数个数,参数的类型,参数顺序)。

9.一维数组

概念:同一种类型数据的集合;
数组的好处:数组里的每个元素都有编号,编号从0开始;依次递增,方便操作这些元素;
使用Java数组:必须先声明数组,再给该数组分配内存;
一维数组:可以理解为一列多行、类型相同的数据,其中每个数据被称为数组元素;
一维数组的声明方式:
type varName[]; 或 type[] varName;(推荐)

java语言声明数组的时候不能指定其长度(元素的个数)

一维数组的初始化
Java中的数组必先初始化才可以使用,所谓初始化就是为数组的数组元素分配内存,并为每个数组元素赋值;
数组初始化的两种方式:
静态初始化:初始化时由我们自己指定每个数组元素的初始值,由系统决定需要的数组长度;
格式:数组名 = new 数组类型[]{元素1,元素2,元素3...元素n};
简化语法:数组名 = {元素1,元素2,元素3...元素n};

动态初始化:初始化时由我们指定数组的长度,由系统为数组元素分配初始值;
格式:数组名 = new 数组类型[数组长度];

不能静态和动态初始化同时使用:也就是说不能同时指定数组的长度和元素;
数组的长度一旦确定,就不能改变,也就数组是定长的;

Java语言的数组索引是从0开始的,也就是说数组里的第一个元素的索引是0,第二个元素的索引是1,依次可以类推。
常见操作:
给数组元素赋值
数组名[索引] = 数组类型的值 ;
访问数组元素
数组类型 变量 = 数组名[索引];
得到数组的长度
int len = 数组名.length; //length是数组的属性
遍历数组

10.内存特点

开辟不同内存空间是为了对每一片内存中的数据都有不同的处理方式,提高效率。
栈内存的特点:
存储局部变量,空间不用时自动释放内存。
堆内存的特点:
存储数组和对象,通过new关键字建立的实体都存放在堆内存当中。
实体都有一个内存地址值。
堆内存中的变量都有默认初始化值。
垃圾回收机制,Java特有的内存管理机制,在不定时的时间内将垃圾清除释放空间。

11.二维数组

动态初始化
int[ ][ ] arr = new int[3][2];
定义了一个二维数组,其中有3个一维数组,每一个一维数组中有2个元素
静态初始化
int[ ][ ] arr = new int[][]{{1,2},{3,4},{5,6}};
int[ ][ ] arr = {{1,2},{3,4},{5,6}};

12.方法的传递机制

值传递:
参数进行传递时都会先在自己方法栈中生成一个实际参数的副本,然后该副本拥有实际参数的堆内存地址,使用结束后副本被释放,而实际参数本身不会受到任何影响;
引用传递:
引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。

原文地址:https://www.cnblogs.com/linbin7/p/14518645.html