目录
1、for的循环嵌套
for(初始化语句;条件判断表达式;步长语句/控制题语句){
//循环体语句:for
for(初始化语句;条件判断表达式;步长语句/控制题语句){
}
}
2、跳转控制语句以及其各自的作用
break:结束中断,结束循环;在switch中使用;不能单独使用。
continue:跳过当前这次循环,执行下一次循环;不能单独使用。
return:结束当前方法。
3、Java中的方法
方法:需使用{}代码块将业务包裹起来,并起一个名字:方法名。
java中方法分为两种情况:
1)有返回值的方法的定义
2)没有具体返回值类型的定义
有返回值的代码格式:public static 返回值类型 方法名 (传入的参数类型 变量名){
return 结果;
}
调用:
单独调用;赋值调用;输出调用。
4、方法的重载
在一个类中,允许存在一个以上的同名方法,只要他们的参数个数或者参数类型不同即可。
特点:与返回值无关,只看参数列表,必须不同。
目的:就是为了提高某个功能的延展性。
5、Java中的内存分配
1、栈(stack):存放的都是方法中的局部变量;方法的运行一定是在栈中。
局部变量:方法的参数,或者是方法{}内部的变量;
作用域:一旦超出作用域,立刻从栈内存当中消失。
2、堆(heap):New出来的东西,都在堆中。
3、方法区:存储.class相关信息,包含方法的信息。
4、本地方法栈:与操作系统相关。
5、寄存器:与cpu相关。
基本数据类型,值是保存在栈中,引用对象,值保存在堆中,栈中存在的对象在堆中的地址。
6、数组
数组:可以存储多个元素的容器: 前提条件:数据类型必须一致!
定义格式:
数据类型[] 数组名称; int[] arr;
数据类型 数组名称[] ; int arr[];数组类型:动态数组和静态数组
动态初始化:给定数组的长度,由系统默认分配元素的内容
数据类型[] 数组名称 = new 数据类型[数组长度] ;
数据类型 数组名称[] = new 数据类型[数组长度] ;静态初始化:给定数组的元素,系统默认分配长度!
原始格式:
数据类型[] 数组名称= new 数据类型[]{元素1,元素2,元素3....} ;简化格式:
数据类型[] 数组名称 = {元素1,元素2,元素3....} ;
//int[] arr = {87,69,57,32,13,"wold"} ; 类型必须一致!
7、数组的高级排序--冒泡排序
冒泡排序思想:
两两比较,较大的值往后放,第一次比较完毕,最大值出现在最大索引处依次这样比较,可以得到排好序的数组!
int[] arr = {12,41,32,4,21,16}; for(int x = 0 ; x < arr.length-1 ; x ++){//外层:比较的次数 for(int y = 0 ;y < arr.length-1-x; y++){ //内层循环:进行比较互换 //判断 if(arr[y] > arr[y+1]){ int temp = arr[y] ; arr[y] = arr[y+1] ; arr[y+1] = temp ; } } } for(int x = 0;x < arr.length-1 ; x ++){//外层:比较的次数 for(int y = 0 ;y < arr.length-1-x; y++){ //内层循环:进行比较互换 //判断 if(arr[y] > arr[y+1]){ int temp = arr[y] ; arr[y] = arr[y+1] ; arr[y+1] = temp ; } } }
8、面向对象
类:能够描述现实世界真实事物的一组属性和行为的集合!
对象:客观存在的具体的事物
类名 对象名 = new 类名() ;
对象名.属性名称(成员变量)= 赋值;
对象名.行为(成员方法名())面向对象的三大特征:封装、多态、继承。
面向对象的设计理念:
不断地去创建对象,使用对象,只会对象做事情。
思想特点:
1)更贴近我们生活中的思想行为习惯
2)让复杂的事情简单化
3)角色发生变化:从执行者到指挥者
9、成员变量和局部变量
区别:
1)在程序中的书写位置不同
局部变量:
方法定义中或者方法声明上
成员变量:
在类中,成员方法外定义的变量
2)在内存中的位置不同的
局部变量:
在栈内存中
成员变量:
在堆内存中
3)生命周期不同
局部变量:
随着方法调用而存在,随着方法调用完毕而消失!
成员变量:
随着对象的创建而存在,随着对象创建完毕之后,不会立即消失,需等待GC回收。
4)初始化不同局部变量:
可以先定义,但是必须在使用之前必须赋值,否则:可能尚未初始化变量
成员变量:
可以不初始化,它存在系统默认初始化。
10、方法的形参类型是引用类型时的参数传递
//方法的形式参数:引用类型:数组,类,接口
//如果是一个具体类,在调用这个方法的时候,实际参数需要传递的是当前类的对象!
class Student{
public void study(){
System.out.println("学习JavaEE...") ;
}
}
class StudentDemo{
public void method(Student s){//形式参数是具体类
s.study() ; //形式参数名.方法名()---->需要通过对象名来访问
}
}//测试类
class StudentTest{
public static void main(String[] args){
//需要调用StudentDemo类中的method方法
//创建StudentDemo类对象
StudentDemo sd = new StudentDemo() ;
//创建一个具体的学生对象
Student student = new Student() ;
sd.method(student) ;
}
}
11、匿名对象
//匿名对象:就是没有名字的对象
//有名字的对象: 类名 对象名 = new 类名() ;
//匿名的格式
//new 类名() ;
//匿名对象特点:匿名对象可以作为参数传递,而且它开发中使用一次就可以,只在堆内存开辟空间,使用完毕,被回收掉!class Student{
public void study(){
System.out.println("学习JavaEE...") ;
}
}
class StudentDemo{
public void method(Student s){//形式参数是具体类
s.study() ; //形式参数名.方法名()---->需要通过对象名来访问
}
}//测试类
class StudentTest{
public static void main(String[] args){
//需要调用StudentDemo类中的method方法
//创建StudentDemo类对象
/*
StudentDemo sd = new StudentDemo() ;
//创建一个具体的学生对象
Student student = new Student() ;
sd.method(student) ;
*/
new StudentDemo().method(new Student()) ;
}
}
12、this关键字
使用this调用属性、方法
1、当形参内部与成员变量重名时,如果在方法内部需要使用成员变量,必须添加this来表明该变量时类成员。
2、在任意方法内,如果使用当前类的成员变量或成员方法可以在其前面添加this,增强程序的阅读性。
3、this可以作为一个类中的构造器,构造器相互调用的特殊格式。
注意:
1、使用this()必须放在构造器首行(因为初始化的动作先执行)
2、使用this调用时本类中其他的构造器,保证至少有一个构造器不用this的。
3、this():是调用自己的无参构造。