给java初学者的部分笔记3!

来源:互联网 发布:vb与台达plc通讯 编辑:程序博客网 时间:2024/06/16 10:40

170719

数组:

用来保存一组相同数据类型的容器。

声明数组 语法:

1、数据类型[] 变量名;   int[] a;

2、数据类型 变量名[];   int a[];

初始化长度:

数组必须初始化长度之后才能使用,并且长度一旦定义之后不能修改。

变量名 = new 数据类型[数组长度];

a =new int[3];

赋值与使用

下标:数组中元素的编号。下标是从0开始到数组长度-1。

可以通过下标来访问数组元素。

a[0]:数组第一个元素

a[a.length-1]:数组的最后一个元素。

length为数组的长度属性,a.length代表数组的长度(数组中元素的个数)。

数组元素的默认值:

int类型-----0

double类型----0.0

String类型------null

boolean类型-----falase

char类型-----空

显示初始化:

1、int[] a;

a=new int[]{1,2,3,4};

2、int[] a=new int[]{1,2,3,4};

注意:上两点”=”后的[]中能加数组长度,否则编译出错。

3、int[] a={1,2,3,4};

数组遍历:

即访问数组中所有的元素。

可以使用for循环、数组的下标来遍历数组元素。

例:

for(int i=0;i<a.length;i++){

System.out.print(a[i]);

}

JVM内存组成:

方法区:存储.class文件信息

栈(stack):存储局部变量和基本数据类型的值。

堆(heap):存储数组值以及对象类型的值。

数组扩容:

因为一个数组的长度一旦定义之后 遍不可以再修改,所以要再想向数组中添加元素需要创建一个新的长度较大的数组,然后把之前数组的所有元素以及新元素拷贝进新数组即可。

方法一:直接赋值:b[i]=a[i];

方法二:System.arraycopy(Object src,Object srcPos,Object dest,Object destPos,int length);

第一个参数:源数组变量名

第二个参数:源数组的起始位置(下标)

第三个参数:目标数组变量名

第四个参数:目标数组其实位置(下标)

第五个参数:要复制的数组长度(元素个数)

方法三Arrays.copyOf(源数组变量名,目标数组的长度);

该方法返回一个新的数组。

Arrays是java.util包下的类,使用时要先导入包。

import java.util.Arrays;

数组排序:

冒泡排序:相邻元素进行比较,每次总会有或大或小的元素沉底。

例:升序冒泡

public static void main(String[] args){

int[] a={4,3,2,1};

for(int i=0;i<a.length-1;i++){

for(int j=0;j<a.length-i-1;j++){

if(a[j]>a[j+1]){

int temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

}

}

print(a);

}

 

public static void print(int[] a){

for(int i=0;i<a.length;i++){

System.out.print(a[i]+”\t”);

}

}

选择排序:固定下标取值,与其他元素进行比较。

例:升序排序

public static void main(String[] args){

int[] a={4,3,2,1};

for(int i=0;i<a.length-1;i++){

for(int j=i;j<a.length-1;j++){

if(a[i]>a[j+1]){

int temp=a[i];

a[i]=a[j+1];

a[j+1]=temp;

}

}

}

print(a);

}

快速排序:已经封装好的一个方法。

Arrays.sort(a);//是按升序排序。

二维数组

二维数组声明:

1、数据类型[][] 变量名;    int[][] a;

2、数据类型 变量名[][];    int a[][];

初始化数组长度

变量名 =new 数据类型[行的长度][];

赋值:

a[0]=new int[]{1,2,3};//给二维数组第一行赋值。

a[a.length-1]=new int[]{4,5};//给二维数组最后一行赋值。

 

面向对象

面向过程的编程思想:

把解决问题的思路看成一个过程,一步一步执行逐步求解。

面向对象的编程思想:

对现实世界中的事物进行抽象,进行编程的思想。

生活中的对象:生活中的一切事物都可以看成众多不同的对象。

属性:对象共有的特征。

方法:对象的行为。

:是对象的一个模板,将对象共有的特征和行为提取出来写成一个类。类是对对象的抽象。

Java中的对象:表示同一个对象数据的集合。

 

class

格式: class 类名{}

属性(成员变量)

成员变量定义在类内部,方法体的外部。

格式:修饰符 数据类型变量名;

通过对象变量来访问成员变量和成员方法。

格式:对象名.成员变量名

对象名.成员方法名();

创建对象语法:

类名 变量名=new 类名();//无参,还可以new有参。

构造方法:

构造方法定义在类的内部。最大的用处就是用来在创建对象时进行初始化。

语法:

1、构造方法名和类名必须一致。

2、构造方法没有方法三要素中的返回值部分,即没有返回值。

3、构造方法在创建对象时调用。如果为有参构造方法,则会在创建对象时进行赋值。

如果在类中没有写任何构造方法,则编译时系统会默认添加一个无参的构造方法。如果写了构造方法,则不会默认添加。

成员方法:

语法:修饰符 返回值方法名(参数表){}

成员方法内部默认有一个this对象,代表的是当前对象。

成员方法从属于对象,所以要用对象来访问成员方法。

对象名.成员方法名;

创建对象的执行流程

1、先执行类加载(只在第一次使用时加载一次)

2、分配空间,进行默认赋值

3、初始化初值

4、调用构造方法创建对象。

参数传递:

Java中的参数传递只有值传递,没有引用传递。

一个对象可以有多个引用,多个引用指向同一个对象,每一个引用都有权修改该对象的值。

参数传递如果传递的变量是基本数据类型,那么传递的是基本数据类型的值;若果传递的变量是对象类型,那么传递的是该对象的地址。

this关键字

this出现在类的内部,代表当前对象。

1、可以通过this关键字访问成员变量和成员方法。(本类内部的成员变量和成员方法默认添加有this)

2、可以通过this关键字访问本类内其他的构造方法。

语法:this(...);

访问本类内构造方法时,只能出现在构造方法的第一句。

局部变量和成员变量的区别:

局部变量:必须先赋值后使用;局部变量有作用域,作用域为定义变量开始到变量所在代码块结束;在同一个作用域,变量名不能重复定义。

成员变量:有默认值;有作用范围,至少在本类内部可以访问;可以与局部变量重名,局部变量有限访问。此时如果想访问成员变量就要用this对象调用成员变量。

原创粉丝点击