Java基础知识小结 二 (自学)

                                                                                流程控制语句


                     判断结构:
if语句
三种格式:
1.  
if(条件表达式)
{
执行语句;
}


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


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


   如果if控制语句只有一条可不用{ },反过来,如果if控制语句没有使用{},可是if后边有好几条语句,if只控制距离if最近的那条语句。


                        
                      选择语句(switch语句)
格式:
switch(表达式)
{
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;

default:
执行语句;
break;
}


switch语句特点:
1,switch语句选择的类型只有四种:byte,short,int , char。
2,case之间与default没有顺序。先执行第一个case,没有匹配的case执
行default。
3,结束switch语句的两种情况:遇到break,执行到switch语句结束。
4,如果匹配的case或者default没有对应的break,那么程序会继续向下
执行,运行可以执行的语句,直到遇到break或者switch结尾结束。


if语句和switch语句的比较:
什么场景下用那些语句?
   如果判断的具体的数值不多,而且符合byte,short,Int,char这四个类型建议使用switch语句。因为效率高。
   其他情况:对于区间判断,对结果为boolean类型判断,使用费if,范围广.


                        循环语句


代表语句:while ,do while ,for


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


                        do while语句格式:
do
{
执行语句;
}while(条件表达式);


do while特点是条件无论是否满足,循环体至少被执行一次。




                        for语句


for(初始化表达式;循环条件表达式;循环后的操作表达式)
{
执行语句;
}
    for里面的连个表达式运行的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,
重复找个过程,直到条件不满足为止。


循环语句特点:
    1.for语句中,条件表达式,要么为真,要么为假,既不是真,也不是假,编译不能通过。
    2.for语句中,初始化表达式和循,环后的操作表达式,只要是合法表达式就行,不一定是某种格式,也可以不写。
    3.有多种表达式时,可以直接写在for语句的后边括号中,用“,”隔开。


最简单的两个无限循环格式:
while(true)
{} 


for(;;)
{}


                           
    累加思想原则:通过变量记录住每次变化的结果,通过循环的形式,进行累加动作。
    计算器思想:通过一个变量记录住数据的状态变化,也许通过循环完成。
class  demo4
{
public static void main(String[] args) 
{
int sum = 0;
for(int x = 1; x<=10;x++)
{
sum += x;


}
System.out.println("for sum ="+sum);
}
}


                         
                           for语句嵌套


对于打印长方形,外循环控制行数,内循环控制的是每一行的个数。
发现图形有许多行,每一行有许多列,要使用嵌套循环,原理:大圈套小圈


    打印的图形如果是尖朝下,且外循环的变量是++,则让内循环的初始化表达式值跟着外循环的变量变化。
    印的图形如果是尖朝上,且外循环的变量是++,则让内循环的条件表达式值跟着外循环的变量变化。
    图行朝上,可以改变内循环的条件表达式,让条件随着外循环的变量变化
    图行朝下,可以改变内循环的初始化表达式,让初始化随着外循环的变量变化


    在打印结果的时候,用“”括起来的是不变的内容。




                      其他的流程控制语句


break( 跳出) ,  continue( 继续)


break语句:应用范围:选择结构和循环结构。
continue语句:应用于循环结构。


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




 
                     函数
什么是函数?
1. 函数就是定义在类中的具有特定功能的一段独立小程序。
2. 函数也称为方法。函数就是方法。


函数的格式:
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,)
{
执行语句;
return 返回值;
}


返回值类型:函数运行后的结果的数据类型。
参数类型:是形式参数的数据类型。
形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数。
实际参数:传递给形式参数的具体数值。
return:用于结束函数。
返回值:该值会返回给调用者。


Java中对功能的定义是通过函数的形式来体现的。


函数的特点:
1.定义函数可以将功能代码进行封装
2.便于对该功能进行复用
3.函数只有被调用才会被执行
4.函数的出现提高了代码的复用性
5.对于函数没有具体返回值的情况,返回值类型用关键字void表示,那么该函数中的return语句如果在最后一行可以省略不写。


注意:
1.函数中只能调用函数,不可以在函数内部定义函数。
2.定义函数时,函数的结果应该返回给调用者,交由调用者处理
3.当返回值类型是void,是不能在主函数中直接打印出来的,只能调用。


    如果定义的函数功能是直接打印出来的,比如九九乘法变,矩形等,则在主函数中直接调用就可以。
    如果定义的函数是一个具体的值,比如,3,5等,则在主函数中定义一个变量,然后在打印。


例如:
int x = getResult(4);
System.out.println("x="+x);




                       函数的重载


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


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


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


两个函数名一致,参数列表相同,但是参数类型不同的函数,不可以同时存在一个类中,因为无法判断调用该函数时哪个运行。


例子:
void show(int a,char b,double c)
void show(int x,char y,double z)




                          数组


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


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


格式1:
元素类型[] 数组名= new 元素类型[元素个数或数组长度];
示例:int[] arr = new int[5];


格式2:
元素类型[] 数组名= new 元素类型[]{元素,元素,……};
int[] arr = new int[]{3,5,1,7};
int[] arr = {3,5,1,7};




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


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


堆内存:
  1.数组和对象,通过new建立的实例都存放在堆内存中。
  2.每一个实体都有内存地址值
  3.实体中的变量都有默认初始化值
  4.实体不在被使用,会在不确定的时间内被垃圾回收器回收


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




                      数组操作常见问题


1.数组脚标越界异常(ArrayIndexOutOfBoundsException)
               int[] arr = new int[2];
               System.out.println(arr[3]);
            访问到了数组中的不存在的脚标时发生。


2.空指针异常(NullPointerException)
                   int[] arr = null;
              System.out.println(arr[0]);
         arr引用没有指向实体,却在操作实体中的元素时


                           
                        数组常见操作


1.获取最值(最大值,最小值)
public class getMax
{


public static void main(String[] args)
{
int[] arr={45,2,100,34,67};
int max = getMax(arr);
System.out.println("max="+max);
}
public static int getMax(int[] arr)
{
int max = arr[0];
for (int x = 1;x<arr.length ;x++ )
{


if (arr[x]>max)
{
max = arr[x];
}
}
return max;
}
}


选择排序:
    选择固定一个位置,那这个位置上的值和其他元素进行比较,换了位置后还拿这个位置上的值和其他元素进行比较
    选择排序:内循环循环一次,最值出现在头角标的位置。
    选择排序会用到循环语句进行挨个比较,在循环语句中添加判断语句,如果满足条件则定义一个第三方变量来进行交换位置。


冒泡排序:
    冒泡排序:相邻的两个元素进行比较,如果符合条件就换位。
    


折半查找(二分查找)
class halfSearch  
{
public static void main(String[] args) 
{
int [] arr = {1,2,3,4,5,6,7,8,9};
int Index = getIndex(arr ,5);
System.out.println("index="+Index);
Hello();
}
public static int getIndex(int [] arr,int key)
{
int min = 0,max = arr.length-1,mid; 
while(min<=max)
{
mid = (min+max)/2;
if(key>arr[mid])
min = min+1;
else if (key<arr[mid])
{
max = mid-1;
}
else
return mid;






}
return -1;




}
}









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值