JAVA代码知识点

while 与 do while 的区别

do{
  sum+=i;
  i++;
}while(i<=100)

whlie 先判断,后执行

do while 先执行,后判断

do while 程序一定会执行一次,然后再进行条件的判断

for循环语句

增强for循环

 int[] number = {10,20,30,40,50};
//遍历数组的元素---------------直接把number的值直接赋值给x,然后输出
        for (int x:number){
            System.out.println(x);
​

break与continue,goto

break 用于强行退出循环,不执行循环中剩余的语句,但程序尚未终止

continue 终止某次循环过程,跳过这一次循环,跳过循环体中尚未执行的语句,接下来直接判断下一次是否执行循环的判定,接着执行下一次循环。

goto

函数,方法

//修饰符 返回类型 方法名(参数类型 参数名)
public static void test(){
  //方法体(具体的功能)
  return 返回值;    //当无返回值时,不需要return
}

实参与形参:

实参:调用方法的实体参数

形参:用来定义方法的参数

return:

一般返回语句return放在方法体的最下面

//return除了返回结果,还有终止方法的意思

  1. 方法返回一个值,方法调用通常被当作一个值

    int larger = max(30,40);
  2. 方法返回值是void,方法调用一定是一条语句

System.out.println("Hello world!");

值传递与引用传递 (面试题)

java都是值传递

方法重载规则

  1. 方法名相同

  2. 参数列表不同

  3. 方法的返回值可以相同,可以不同

  4. 仅返回类型不同不能够成为方法的重载

命令行传参 (method Demo03)

当点击控制台下面的terminal 进入命令行

输入javac 包名.类名

或者 通过控制台进入命令行:

  1. 先通过文件位置 加cmd 进入控制台

  2. javac 类名.java //编译

  3. 要回退到src目录才能执行:cd../ //因为包里面有个package,需要回退src,需要找到包的路径才能加载

  4. java 包名.类名 + 传递的参数 //执行代码

可变参数/不定项参数(method Demo04)

  1. 指定参数类型后加一个省略号(...)

  2. 一个方法中只能指定一个可变参数,他必须是方法的最后一个参数,任何普通的参数都必须在的之前声明

递归(面试) (method Demo05)

  1. 递归头:什么时候不调用自己的方法,如果没有头,将陷入死循环。

    递归中的f(1)

  2. 递归体:什么时候需要调用自身的方法。

method 练习:写一个计算器

数组

数组四个特征:

  1. 长度确定,一旦被创建,大小不可以改变

  2. 元素必须是相同类型的,不能够混合

  3. 元素可以是任何类型的,包括基本类型和引用类型

  4. 数组本身就是对象,数组的元素相当于对象的成员变量

数组的创建:(相关new的操作都会与堆有关)

int[] nums = new int[10];      //声明与创建
int[] nums;                    //1.声明一个数组      数组并不存在
nums = new int[10];            //2.创建一个数组      数组才会产生
​
int[] a = {1,2,3,4,5,6,7,8,9};  //静态初始化

array.length 数组的长度

  1. 静态初始化

    创建+赋值

  2. 动态初始化(数组一经分配空间,其中的每个元素都会被隐式初始化)

    包含默认初始化---------int 默认初始化为0

一个错误BUG:

ArrayIndexOutOfBoundsException:数组下标越界了

数组的使用:

//反转数组------函数
public static int[] reverse(int[] arrays){
    int[] result = new int[arrays.length];
    for (int i = 0,j=arrays.length-1; i < arrays.length; i++,j--) {
        result[j] = arrays[i];
    }
    return result;
}
​
  //打印数组元素------函数
    public static void printArray(int[] arrays){
        for (int i = 0; i < arrays.length; i++) {
            System.out.print(arrays[i]+" ");
​
        }
    }   

二维数组

int[][] array = {{1,2},{3,4},{5,6}};
    printArray(array[0]);
    System.out.println(array[0][0]);
    System.out.println("-------------------------------------");
    System.out.println(array.length);                              //输出的为二维数组的外层数组
    System.out.println(array[0].length);                           //输出的为二位数字内层的数组
    System.out.println("-------------------------------------");
    for (int i = 0; i < array.length; i++) {                       //输出整个二维数组
        for (int j = 0; j < array[i].length; j++) {
            System.out.println(array[i][j]);
            System.out.println("-----------------------------");
        }
​
    }
}
​
​
    int[] a = {1,2,34,5344,123,24,52};
        System.out.println(a);  //[I@7f31245a
​
        Arrays.sort(a);                                              //数组进行排序
        System.out.println(Arrays.toString(a));
​
        Arrays.fill(a,0);                                          //数组填充(数组全都用0表示)
        System.out.println(Arrays.toString(a));
    }
​
​
​
    //重新造轮子----------------------------------------定义打印数组函数
    public static void printArray(int[] a){
        for (int i = 0; i < a.length; i++) {
            if (i==0){
                System.out.print("[");
            }
            if (i==a.length-1) {
                System.out.print(a[i] + "]");
            } else{
                System.out.print(a[i]+",");
            }
​

稀疏数组

11(棋盘总共多少行)11(棋盘总过多少列)3(总共棋盘中有三个非零的值)
031
452
151

 /*
        array1 为最基础的矩阵
        array2 为压缩的稀疏矩阵
        array3 为稀疏矩阵返回的正常矩阵
         */
​
​
​
        //1.创建一个二维数组11*11的棋盘   0:没有棋子 1:黑棋   2:白棋
        int[][] array1 = new int[11][11];
        array1[1][2] = 1;
        array1[2][3] = 2;
        //输出原始数组
        System.out.println("输出原始数组:");
​
        for (int[] ints : array1){
            for (int anInt : ints){
                System.out.print(anInt+"\t");
            }
            System.out.println();
        }
​
​
        //转换为稀疏数组保存
        //1.获取有效值的个数
        int sum = 0;
        for (int i = 0; i < 11; i++) {
            for (int j = 0; j < 11; j++) {
                if (array1[i][j]!=0) {
                    sum++;
                }
            }
        }
        System.out.println("有效值的个数:"+sum);
​
        //2. 创建一个稀疏数组的数组
        int[][] array2 = new int[sum+1][3];
        array2[0][0] = 11;
        array2[0][1] = 11;
        array2[0][2] = sum;
​
        //遍历二维数组,将非零的值,存放在稀疏数组中
        int count = 0;
        for (int i = 0; i < array1.length; i++) {
            for (int j = 0; j < array1[i].length; j++) {
                if (array1[i][j]!=0){
                    count++;
                    array2[count][0] = i;
                    array2[count][1] = j;
                    array2[count][2] = array1[i][j];
                }
            }
        }
        //输出稀疏数组
        System.out.println("稀疏数组:");
        for (int i = 0; i < array2.length; i++) {
            System.out.println(array2[i][0]+"\t"
            +array2[i][1]+"\t"+array2[i][2]+"\t");
        }
​
​
​
        //还原稀疏数组
        //1. 读取稀疏数组
        System.out.println("---------------------------");
        int[][] array3 = new int[array2[0][0]][array2[0][1]];
​
        //给其中的元素还原值
        for (int i = 1; i < array2.length; i++) {
            array3[array2[i][0]][array2[i][1]] = array2[i][2];
        }
        //打印
        System.out.println("输出还原数组:");
​
        for (int[] ints : array3){   //遍历array3
            for (int anInt : ints){
                System.out.print(anInt+"\t");
            }
            System.out.println();
        }
​
​
​

​
    //冒泡排序
    //比较数组中,两个相邻的元素,如果第一个数比第二个数大,我们则交换他们的位置
    //每一次标胶后都会产生一个最大或者最小的数字
    //下一轮则可以少一次排序
    //依次循环,直到结束
    public static int[] sort(int[] array){
        //临时变量
        int temp = 0;
        //外层循环。判断我们要走多少次
        for (int i = 0; i < array.length-1; i++) {
            //内层循环,如果第一个数比第二个数大,则交换位置
            for (int j = 0; j < array.length-1-i; j++) {
                if (array[j + 1] > array[j]) {
                    temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                }
            }
        }
        return array;
    }
​

内存分析

无限级树(Java递归) 2007-02-08 10:26 这几天,用java写了一个无限极的树,递归写的,可能代码不够简洁,性能不够好,不过也算是练习,这几天再不断改进。前面几个小图标的判断,搞死我了。 package com.nickol.servlet; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.nickol.utility.DB; public class category extends HttpServlet { /** * The doGet method of the servlet. * * This method is called when a form has its tag value method equals to get. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("utf-8"); response.setContentType("text/html"); PrintWriter out = response.getWriter(); out .println(""); out.println(""); out.println(" Category" + "" + "body{font-size:12px;}" + "" + "" + ""); out.println(" "); out.println(showCategory(0,0,new ArrayList(),"0")); out.println(" "); out.println(""); out.flush(); out.close(); } public String showCategory(int i,int n,ArrayList frontIcon,String countCurrent){ int countChild = 0; n++; String webContent = new String(); ArrayList temp = new ArrayList(); try{ Connection conn = DB.GetConn(); PreparedStatement ps = DB.GetPs("select * from category where pid = ?", conn); ps.setInt(1, i); ResultSet rs = DB.GetRs(ps); if(n==1){ if(rs.next()){ webContent += "";//插入结尾的减号 temp.add(new Integer(0)); } webContent += " ";//插入站点图标 webContent += rs.getString("cname"); webContent += "\n"; webContent += showCategory(Integer.parseInt(rs.getString("cid")),n,temp,"0"); } if(n==2){ webContent += "\n"; }else{ webContent += "\n"; } while(rs.next()){ for(int k=0;k<frontIcon.size();k++){ int iconStatic = ((Integer)frontIcon.get(k)).intValue(); if(iconStatic == 0){ webContent += "";//插入空白 }else if(iconStatic == 1){ webContent += "";//插入竖线 } } if(rs.isLast()){ if(checkChild(Integer.parseInt(rs.getString("cid")))){ webContent += "";//插入结尾的减号 temp = (ArrayList)frontIcon.clone(); temp.add(new Integer(0)); }else{ webContent += "";//插入结尾的直角 } }else{ if(checkChild(Integer.parseInt(rs.getString("cid")))){ webContent += "";//插入未结尾的减号 temp = (ArrayList)frontIcon.clone(); temp.add(new Integer(1)); }else{ webContent += "";//插入三叉线 } } if(checkChild(Integer.parseInt(rs.getString("cid")))){ webContent += " ";//插入文件夹图标 }else{ webContent += " ";//插入文件图标 } webContent += rs.getString("cname"); webContent += "\n"; webContent += showCategory(Integer.parseInt(rs.getString("cid")),n,temp,countCurrent+countChild); countChild++; } webContent += "\n"; DB.CloseRs(rs); DB.ClosePs(ps); DB.CloseConn(conn); }catch(Exception e){ e.printStackTrace(); } return webContent; } public boolean checkChild(int i){ boolean child = false; try{ Connection conn = DB.GetConn(); PreparedStatement ps = DB.GetPs("select * from category where pid = ?", conn); ps.setInt(1, i); ResultSet rs = DB.GetRs(ps); if(rs.next()){ child = true; } DB.CloseRs(rs); DB.ClosePs(ps); DB.CloseConn(conn); }catch(Exception e){ e.printStackTrace(); } return child; } } --------------------------------------------------------------------- tree.js文件 function changeState(countCurrent,countChild){ var object = document.getElementById("level" + countCurrent + countChild); if(object.style.display=='none'){ object.style.display='block'; }else{ object.style.display='none'; } var cursor = document.getElementById("cursor" + countCurrent + countChild); if(cursor.src.indexOf("images/tree_minus.gif")>=0) {cursor.src="images/tree_plus.gif";} else if(cursor.src.indexOf("images/tree_minusbottom.gif")>=0) {cursor.src="images/tree_plusbottom.gif";} else if(cursor.src.indexOf("images/tree_plus.gif")>=0) {cursor.src="images/tree_minus.gif";} else {cursor.src="images/tree_minusbottom.gif";} var folder = document.getElementById("folder" + countCurrent + countChild); if(folder.src.indexOf("images/icon_folder_channel_normal.gif")>=0){ folder.src = "images/icon_folder_channel_open.gif"; }else{ folder.src = "images/icon_folder_channel_normal.gif"; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值