黑马程序员--Java基础学习03

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------

以下是基础的第二部分笔记(有点散乱,可能你们不大看得懂,个人笔记,都是特别基础知识,所以没有特别编辑整理,请见谅):

判断结构:

if(条件表达式){

执行语句;}

 

if(条件表达式){

语句1}

else{语句2}   //相当于三元运算符,可以简化代码,但由于是元运算符,所以必须要有一个结果,但是对于这个条件表达式,所以不需要有结果

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

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

.....else{语句;}

 

选择结构 switch(表达式){

case 取值1:语句1break

case 取值2:语句2break

.....default:语句;break} //switch特点,语句选择类型只有byteshortintchar。 很难判断区间。 case之间与default没有顺序,先执行第一个case,没有匹配的case执行default。结束switch有两种情况,1,遇到break2,执行到switch结束。如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可执行语句,直到遇到break或者switch结束。 

break(跳出)应用范围:选择结构循环结构   continue(继续)应用于循环结构

 

注意:这两者离开应用范围无存在意义。这两个语句单独存在下面都不可以有语句,因为执行不到,标号出现可以让这两个语句作用于指定范围,continue结束本次循环,继续下次循环。

无限循环的简单表现形式:

for(;;){ }    while(true){}

 

累加思想,计数器思想。

 

for(初始化表达式:循环条件表达式:循环后的操作表达式)

{执行语句:

}

注意:初始化表达式只读一次,判断循环条件,为真执行语句,再执行循环后的操作表达式,再判断循环条件,重复直到条件不满足为止。

whilfor可以互换,for为了循环而定义的变量在for循环结束后就在内存中释放,而while循环使用的变量在循环结束后还可以继续使用。所以当变量只是在循环中使用优先for循环,节约内存

 

 

while(条件表达式){执行语句:自动判断是否满足自动执行,(先判断,再执行)

do{语句:}while(条件);  先执行,后判读条件决定是否再执行。至少执行了一次)

语句嵌套:语句中含有语句。比如,循环嵌套。(内循环结束才再循环外循环)正方形中外循环控制行,内循环控制列) 打印五角星,尖朝上,改变条件,让条件随着外循环变化变化。尖朝下,改变初始化值)

 

函数:

函数是定义在类中具有特定功能的一段独立小程序。

函数格式:

修饰符  返回值类型 函数名(参数类型 形势参数1,参数类型形势参数2){

执行语句:

return返回值:

}

返回值类型:函数运行后产生的结果的数据类型.

参数类型:是形式参数的数据类型。

形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数

实际参数:传递给形式参数的具体数值

return:用于结束函数

返回值:该值返回给调用者。

为了提高代码的复用性,对代码进行抽取,将这部分定义成独立功能,方便日后使用,java中对功能的定义通过函数来体现的,当函数运算后没有具体返回值时用特殊关键字void

void时候,函数中可以省略return语句。

最小的功能就是函数,写代码就是将不同的功能结合。

如何定义一个函数?

1.函数是一个独立的功能。该功能的运算结果是什么?

2.定义该功能过程中是否有未知的内容参与运算。

if(x==y)

return true;

return false;//直接省略else

public static oid getint a,int b){

System.out.println(a+b);

return;

}//这个函数定义思想有问题,因为只要满足加法功能就行了,要不要打印由调用者决定,功能单一最好。返回值类型为void的函数不能出现在System .out.println(get(a,b);

函数重载:在同一个类中,允许存在一个以上的同名函数,只有他们参数个数或者参数类型不同即可。

重载特点:与返回值类型无关,只看参数列表

重载好处:方便阅读,优化程序设计

什么时候用:当定义功能相同,但是参与运算的未知内容不同。可以使用,提高代码服复用性。

void show (inta,char b,double c){};

a,void show(int x,char y,double z){}//没有重载,和原函数一致

b.int show(int a,double c,char b){}重载,参数类型不同,注意重载和返回值类型没有关系

c,void show(int a,double x,char b){}重载,参数类型不同

d,boolean show(int c,char b(){}重载了,因为参数个数不同

e,void show(double a){}重载了,因为参数个数不同

f,double show(int a,char b,double x){}//没有,这个函数不可以和原函数出现在一个类中,虚拟机不知道执行哪个

数组:同一种类型的数据集合,其实数组就是一个容器

数组好处:可以自动给数组的元素从0开始编号,方便操作这些元素。

格式一:

元素类型[] 数组名=new 元素类型[元素个数或数组长度]

egint[] arr=new int[7]//int a[]=new int[5];

元素类型[] 数组名=new 元素类型[]{元素,元素,。。。}

int[] arr=new int[]{357}

int[] arr={3567}//数据明确时用。

j内存结构:ava程序在运行时,需要在内存中的分配空间。为了提高运算效率,有对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。

栈内存:用于存储局部变量,当数据使用完,所占空间会自动释放。

堆内存:

数组和对象,通过new建立的实例都存放在堆内存中。

每一个实体都有内存地址值

实体中的变量都有默认初始化值。double0.0float 0.0fboolean false

实体不被使用时,会在不确定的时间内被垃圾回收器回收。

方法区:本地方法区,寄存器。

栈:int a=5int b=a b=8; 此时a的值不变

int[] y=new int[3]; int[] x=y  x[1]=9;此时y[1]=9; //int[] y=new int[3]数组是int型,y是数组类型。new用来在内存中开辟一个存储实体。

c++中必须手动清除堆中垃圾。java不用,不定时的自动清除。

ArrayUndexOutOfBoundsException:操作数组时,访问到了数组中不存在的角标

NullPointerExcion:空指针异常:当引用没有任何指向值为null的情况,该引用还在用于操作实体中。

数组的操作:获取数组中的元素最为常见。通常用到遍历。

数组中有一个属性可以直接获取到数组元素的个数,length,使用方式:数组名称.length=

数组的查找:return -1;代表没有找到的情况 。  该进--折半查找(可以提高效率,但必须保证该数组是有序的。

对数组进行排序:

选择排序:内循环结束一次,最值出现在零角标位上。

冒泡排序:相邻两个元素进行比较,如果符合条件换位,第一圈,最值出现在最后位..

选择排序和冒泡排序性能低,每交换一次,堆内存中比较消耗资源,虽然有时不大,可以优化,转换到在栈中进行。但事实中不这样做,应付考试,会写。Arrays.sort(arr);真实开发使用。

发现无论什么排序,都需要对满足条件的元素进行位置置换,所以把这部分相同的代码提取出来,单独封装成一个函数。

折半查找

查表法:将所有的元素临时存储起来,建立对应关系。

每一次&15后的值作为索引去查建立好的表,就可以找对应的元素,这样比-10+A’简单

怎么建立这个表?

可以通过数据的形式来定义。

结果是反着的,除了使用StringBuffer,还可以使用数组完成

二维数组:

格式:int [] []arr=new int[3][2];

定义了名称为arr的二维数组,有三个一维数组,每个一维数组中有2个元素,一维数组的名称分别为arr[0],arr[1],arr[2].给第一个一维数组1角标赋值为78arr[0][1]=78

格式2

int[][] arr=new int[3][]

二维数组中有三个一维数组,每个一维数组的初始化值为null,可以分别对这三个一维数组分别进行初始化:

arr[0]=new int[3]; arr[1]=new int[1];arr[2]=new int[2];

int[] x,int x[];

int[][] y;int y[][];int[] y[];

int []x,y[];//x一维,y二维

ax[0]=y;//no

b.y[0]=x;//yes

c.y[0][0]=x;//no

d,x[0][0]=y;//no

e y[0][0]=x[0]//yes

f,x=y;//no

 -----------android培训、java培训、java学习型技术博客、期待与您交流!------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值