学习笔记 Java_毕向东_流程控制语句_函数_数组 2014.7.30
来源:互联网 发布:windows 2008 r2 ad域 编辑:程序博客网 时间:2024/05/17 22:20
一、流程控制语句
1、for
- 代码:MyForTest3.java
//1~100之间 7的倍数的个数。并打印。 //计数器 class MyForTest3 { public static void main(String[] args) { int count = 0; for(int x = 1; x <= 100; x++) { if(x % 7 == 0) { System.out.print("x=" + x + ","); count++; } } System.out.println("count:" + count);} }
- 代码:MyForForDemo.java
/*需求:打印出****************/class MyForForDemo {public static void main(String[] args) {for(int x = 0; x < 5; x++){//for(int y = 0; y < (5 - x); y++)for(int y = x; y < 5; y++){System.out.print("*");}System.out.println();}}}
- 代码:MyForForTest.java
class MyForForTest{public static void main(String[] args){/*****************/for(int x = 0; x < 5; x++){for(int y = 0; y < (x + 1); y++){System.out.print("*");}System.out.println();}//九九乘法表for(int x = 1; x <= 9; x++){for(int y = 1; y <= x; y++){System.out.print(y + "*" + x + "=" + (y * x) + "\t");}System.out.println();}}}
MyForForTest2.java
/* * * * * * * * * * ** * * * **/class MyForForTest2{public static void main(String[] args){for(int x = 1; x <= 5; x++){for(int y = x; y < 5; y++){System.out.print(" ");}for(int z = 1; z <= x; z++){System.out.print("* ");}System.out.println();}}}
2、break,continue
- break:用于:选择(switch),循环结构。标号 w:for(){for(){break w;}} //break w,就停止w循环了
- continue:只能用作循环结构。结束本次循环,继续下一次循环
- 代码:MyOtherDemo.java
class MyOtherDemo {public static void main(String[] args) {wai:for(int x = 1; x <= 5; x++){for(int y = 1; y <= 3; y++){System.out.print("*:");//continue wai;//break;}System.out.println(",");}}}
二、函数
1、函数的特点
- void Xxx(){return;} //如果返回类型是void,该函数内部的return语句如果在最后一行,可以省略
- 注意:函数中只能调用函数,不能定义函数。
2、函数的应用
- return就代表函数结束了。
- 返回值类型为void时,不要输出(System.out.println();)。直接调用就是了:函数名(参数)
- 代码:MyFunctionDemo2.java
class MyFunctionDemo2{static int sum(int x, int y){return x + y;}static boolean isEqual(int x, int y){return x == y;}static int max(int x, int y){return x >= y ? x : y;}public static void main(String[] args){int a = 1, b = 3;System.out.println("sum=" + sum(5,7));System.out.println("a isEqual b:" + isEqual(a, b));System.out.println("a,b max:" + max(a, b));}}
- 代码:MyFunctionTest.java
class MyFunctionTest {static void drawRectangle(int row, int col){for(int x = 0; x < row; x++){for(int y = 0; y < col; y++){System.out.print("*");}System.out.println();}}public static void main(String[] args) {drawRectangle(3, 4);}}
3、重载
- 特点:与返回类型无关,只看参数列表。
三、数组
1、 数组定义
- 定义数组。格式1:代码:MyArrayDemo.java
class MyArrayDemo {public static void main(String[] args) {int[] x = new int[3];x[0] = 58;System.out.println(x[0]);x = null; //只有引用数据类型才能引用这个常量(不知道地址,x就跟数组没有关系了。就会被视为垃圾。在不定时的时间内会启动垃圾回收机制清除它,优化比C++做得好)System.out.println(x); //得null}}
- 定义数组。格式2:
int[] a = new int[]{1, 2, 3, 4}; //new int[]括号里就不写长度了int[] b = {5, 9, 3, 2, 1};
2、内存结构
- 栈内存:用于存储局部变量(定义在方法中的变量,定义在方法内的参数中的变量,定义在for循环的变量)。数据使用完毕,会自动释放
- 堆:new出来的东西都在堆里面。凡是new出来的都叫实体(数组和对象);每一个实体都有内存地址值;实体中的变量都有默认初始化值(boolean型默认是false);实体在不被使用时,会在不确定的时间内被垃圾回收器回收。 实体和实例是一样的吧?
3、数组是引用数据类型。代码:MyArrayDemo.java
class MyArrayDemo {public static void main(String[] args) {int[] x = new int[3];int[] y = x;y[1] = 68;System.out.println(x[1]); //得68x = null; //此时,对内存中没有垃圾。相当于:同一台电脑(堆),x没用了,但是y还在用System.out.println(x); //得nullSystem.out.println(y[1]); //得68}}
4、编译时只检查语法错误
- 所以int[] arr = new int[3]; 输出arr[3]在编译时OK,运行时就有ArrayIndexOutOfBoundsException提示了
5、打印数组的元素。代码:MyArrayDemo3.java
class MyArrayDemo3 {//打印数组中的元素。元素间用逗号隔开。static void printArray(int[] arr){for(int x = 0; x < arr.length; x++){if(x != arr.length - 1) //这样就可以把数组末尾的逗号去掉了System.out.print(arr[x] + ","); elseSystem.out.print(arr[x]);}System.out.println();}public static void main(String[] args) {int[] a = new int[]{1,2,3};printArray(a); System.out.print(a); //得[I@16dadf9 打印的是数组的引用}}
6、最值。代码:MyArrayTest.java
class MyArrayTest {//获取最大值static int max_1(int[] arr){int max = arr[0];for(int x = 1; x < arr.length; x++) //如果x=0,0和0比没意识嘛,就让它为1,少比一次{max = arr[x] > max ? arr[x] : max;}return max;}//获取最大值的另一种方法static int max_2(int[] arr){int max = 0; //0最为脚标存在for(int x = 0; x < arr.length; x++){//arr[max] = arr[x] > arr[max] ? arr[x] : arr[max];if(arr[x] > arr[max])max = x;}return arr[max];}static int min(int[] arr){int min = arr[0];for(int x = 1; x < arr.length; x++){min = arr[x] < min ? arr[x] : min;}return min;}public static void main(String[] args) {int[] a = new int[]{1, 2, 3};System.out.println("max=" + max_1(a) + ",min=" + min(a));System.out.println("max=" + max_2(a) + ",min=" + min(a));}}
7、排序。(冒泡和选择是面试经常问到的)代码:MyArrayTest2.java
import java.util.*;//Arrays.sort(arr);//java中已经定义好的一种排序方式。开发中,对数组排序。要使用该句代码。class MyArrayTest2 {//选择排序(从小到大排序)//内循环结束一次,最值出现头角标位置上。static void selectSort(int[] arr){for(int x = 0; x < arr.length - 1; x++)//x < arr.length; x++){for(int y = x + 1; y < arr.length; y++){if(arr[x] > arr[y]) //这里换成小于,就是从大到小排序了{/*int temp;temp = arr[x];arr[x] = arr[y];arr[y] = temp;*///swap(arr, arr[x], arr[y]); //为什么调用这个函数会出现ArrayIndexOutOfBoundsException?swap(arr, x, y); //原来是我参数(x和y)传错了}} }}//冒泡排序(面试中常遇到的)//最值出现在了最后位static void bubbleSort(int[] arr){for(int x = 0; x < arr.length - 1; x++){//for(int y = 0; y < arr.length - 1; y++)for(int y = 0; y < (arr.length - 1) - x; y++) //冒泡一次,就能在后面确定一个元素。所以,每次比较的次数都会减1{if(arr[y] > arr[y + 1]) {int temp;temp = arr[y];arr[y] = arr[y + 1];arr[y + 1] = temp;}}}}static void swap(int[] arr, int a,int b) //为什么会越界啊? {int temp;temp = arr[a];arr[a] = arr[b];arr[b] = temp;}static void printArray(int[] arr){for(int x = 0; x < arr.length; x++){if(x != arr.length - 1)System.out.print(arr[x] + ",");elseSystem.out.println(arr[x]);}}public static void main(String[] args) {//int[] arr = new int[]{5, 9, 3, 2, 1};int[] arr = {5, 9, 3, 2, 1}; //还可以这么定义?selectSort(arr);printArray(arr);bubbleSort(arr);printArray(arr);int[] a = {5, 9, 3, 2, 1, 7, 5}; Arrays.sort(a);printArray(a);}}
1 0
- 学习笔记 Java_毕向东_流程控制语句_函数_数组 2014.7.30
- 学习笔记 Java_毕向东_语言基础_程序流程控制 2014.7.29
- 学习笔记 Java_毕向东_数组_面向对象 2014.7.31
- 学习笔记_毕向东 Java_继承_抽象类_接口_多态 2014.7.13
- 学习笔记_毕向东 Java_多态 2014.7.14
- 学习笔记_毕向东 Java_多线程 2014.7.16
- 学习笔记_毕向东 Java_内部类_异常_多线程 2014.7.15
- 学习笔记 Java_毕向东_多线程_同步函数 2014.8.7
- 学习笔记 Java_毕向东_面向对象 2014.8.1
- 学习笔记 Java_毕向东_面向对象_静态_异常 2014.8.2
- 学习笔记 Java_毕向东_创建线程_同步代码块synchronized 2014.8.6
- 学习笔记_毕向东 Java_集合框架_LinkedList 2014.7.22
- 学习笔记 Java_毕向东_Java概述_语言基础 2014.7.28
- 黑马程序员_毕向东_Java基础_DAY03_循环控制_学习笔记
- 黑马程序员_毕向东_Java基础_DAY03_函数_学习笔记
- 【C++学习笔记】08_流程控制语句
- Swift_学习笔记_控制语句和函数
- Java_数组_基本概念
- (无bug版)有一段文本,将文本中的所有单词,存放到一个字符指针数组中(要求每个单词内存恰好)。
- Myeclipse和tomcat模拟写服务器数据
- C# winform使用redis完成简单通信
- 奇异值分解SVD(Singular Value Decomposition)
- 跟我一起学extjs5(25--模块Form的自定义的设计[3])
- 学习笔记 Java_毕向东_流程控制语句_函数_数组 2014.7.30
- 数据库操作iOS库MagicalRecord使用说明(2)
- linux下如何用GDB调试c++程序
- 导航栏相关设置
- 代码之谜(一)- 有限与无限 从整数的绝对值说起
- (指针版,无bug版)有一段文本,将文本中的所有单词,存放到一个字符指针数组中(要求每个单词内存恰好)
- c++构造函数详解
- C++中的public,private,protected访问
- hdu-2097-Sky数