您的位置:首页 > 编程语言 > Java开发

04.Java语言基本语法之程序控制、一维数组和多维数组

2017-11-16 16:04 429 查看
---2.7程序流程控制:
①顺序结构:程序从上到下逐行执行,中间没有任何判断和跳转;
②分支结构:根据条件,选择性地执行某段代码,有if/else和switch两种分支语句;

③循环结构:根据循环条件,重复性的执行某段代码;有while、do/while、for三种循环语句。

[JDK1.5提供了for/each循环,方便遍历集合、数组元素]。

-----

Scanner sc = new Scanner(System.in);

String s = sc.next();=sc.nextLine();

int i1 = sc.nextInt();//依次从键盘输入三个整数

int i2 = sc.nextInt();

int i3 = sc.nextInt();

---2.10switch-case的使用:

·
变量的类型:char、byte、short、int、枚举、String(JDK1.7)

---3.2 for循环结构的使用:

循环语句的4个组成部分:

①初始化部分(init_statement)

②循环条件部分(test_exp)

③循环体部分(body_statement)

④迭代部分( alert_statement);

---3.9 break和continue关键字的使用:
break:结束当前循环;
continue:结束当次循环;

for(int i=1;i<10;i++){

if(i%4==0){

//break;//结果是1,2,3

continue;//结果是1,2,3,5,6,7,9

}System.out.print(i);

}

---3.12一维数组的使用:

数组:数组是多个相同类型数据的组合,实现对这些数据的统一管理;数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型;数组属于引用类型,数组型数据是对象(Object),数组中的每个元素相当于该对象的成员变量;

--初始化:
①静态初始化:初始化数组与给数组元素赋值同时进行:

String[] names=new String[]{"张三","李四","王五"};
②动态初始化:

int scores[]=new int[4];

scores[0]=98;

scores[1]=99;

scores[3]=83;
数组的长度:length属性:names.length;
---4.2数组元素的默认初始化值:

基本数据类型short、int、long默认值为0,char为空格,float和double为0.0;boolean为false;

引用类型的变量构成的数组而言,默认初始值为null;

[数组一旦初始化,其长度是不可变的;集合有一个比较好的实现类,可以解决这个弊端。]

---4.3一维数组的内存结构:
栈stack:用于存放局部变量或对象的引用;
堆heap:new出来的东西,比如说数组、对象;
方法区:程序里面的类名、包名、方法的定义;内有常量池(字符串常量池);
静态域:静态的变量,static修饰的;

---4.5一维数组的练习:

[生成随机数:Math.random(),返回值类型double;

四舍五入取整:Math.round(double d),返回值类型long];

---4.9数组常见异常:

①java.lang.ArrayIndexOutOfBoundsException数组下标越界;

②java.lang.NullPointerException空指针异常;
---4.10二维数组的练习:

一维数组:int[] x或者int x[];

二维数组:int[][] y或者int[] y[]或者int y[][]
·Java中多维数组不必都是规则矩阵形式;
[注意特殊写法:int[]x,y[];x是一维数组,y是二维数组;

int[] x,y[];

//int[] x;//一维数组

//int[] y[];//二维数组

y=new int[3][2];

x=y[0];

x[0]=y[1][2];

声明int[] x,y[];以下选项允许通过编译的是:

a) x[0]=y; //false;

b) y[0]=x; //true;

c) y[0][0]=x; //false;

d) x[0][0]=y; //false;

e) y[0][0]=x[0]; //true;

f) x=y; //false;]
---4.11二维数组的练习之杨辉三角:

杨辉三角和二项式定理的系数一一对应:

(a+b)^n=Cn0a^nb^0+Cn1a……

①第一行有1个元素,第n行有n个元素;

②每一行的第一个元素和最后一个元素都是1;

③从第三行开始,对于非第一个元素和非最后一个元素的元素:yanghui[i][j]=yanghui[i-1][j-1]+yanghui[i-1][j];

//①初始化二维数组;

int[][] yh=new int[10][];//打印10行杨辉三角

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

yh[i]=new int[i+1];}

//②显式的为二维数组的每个元素赋值;

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

      for(int j=0;j<yh[i].length;i++){

           yh[i][0]=yh[i][i]=1;

          if(i>1&&j>0&&j<i){
yh[i][j]=yh[i-1][j-1]+yh[i-1][j];

}}}

//③遍历打印二维数组

---4.12数组的常用算法:

①数组元素的最大值、最小值和平均值、总和等;

②数组的复制、反转

③数组元素的排序
Ctrl+Shift+f-->格式化文本格式

[int[] arr1,arr2;

 arr1=new int[]{2,3,5,6,1,4,5};

 arr2=arr1;//这样赋值arr2之后对arr2进行动态修改数组内值,其结果也会同样作用到arr1上;这涉及到值传递,此时System.out.println(arr1)的结果是“[I@64ea66”,是其在堆空间的地址,同样打印arr2也是同样结果,因为在赋值过程中把地址值传递过去了];

---4.13数组排序:

①插入排序:直接插入排序、折半插入排序、Shell排序;

②交换排序:冒泡排序、快速排序(或分区交换排序);

③选择排序:简单选择排序、堆排序

④归并排序

⑤基数排序

直接使用util包下的Arrays.sort(数组)方法;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: