黑马程序员技术交流社区

标题: 新人学习笔记 [打印本页]

作者: 李振在黑马    时间: 2015-9-11 15:25
标题: 新人学习笔记
函数
定义特定功能,提高代码的复用性。Java中对功能的定义是通过函数的形式体现的。
函数定义的格式:修饰符  返回类型  函数名(参数类型 形式参数1,参数类型 形式参数….)
{        
               执行语句;
                                返回值类型;
}
返回值类型:函数运行后的结果的数据类型。
参数类型:是形式参数的数据类型
形式参数:是一个变量,用于存储调用函数传递给函数的实际参数
Return:用于结束函数
返回值:该值会返回给调用者。
函数只有被调用才会执行。
对于没有返回值类型用void  可以不写return
函数之间是平级的只能调用不能在函数里边定义新函数。
函数的小练习:定义一个功能可以打印矩形,行列可以随意控制。
定义一个 功能打印99乘法表,也可打印到其他数字的乘法。
//打印一个矩形可以根据提供的两数控制行列
class TextHanShu{
    public static void printJu(int a,int b){
        for(int x=0;x<a;x++){
        for(int y=0;y<b;y++){
        System.out.print("*");}
        System.out.println();}
}
    public static void main(String[] args){
             printJu(3,5);
        printJu(5,7);}
}   
//打印九九乘法表。可以打印到任意数
class Print99{
    public static void printCC(int a){
        for(int x=1;x<=a;x++){
           for(int y=1;y<=x;y++){
           System.out.print(y+"*"+x+"="+y*x+"\t");}
           System.out.println();}
}
    public static void main(String[] args){
            printCC(9);}
}        

函数的重载
在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可。与返回值无关,只看参数列表。
什么时候用重载?
但定义的功能相同,但参与运算的未知内容不同。
就可以定义一个函数以表示该功能,方便阅读。通过参数列表的不同区分多个同名函数。
注:参数是有顺序的。
数组
同一种类型数据的集合,其实数组就是一个容器。
自动给数组中的元素从0开始编号,方便操作这些元素。
格式1      元素类型[] 数组名=new 元素类型{元素个数或数组长度}
示例:int[] arr=new int[5];
格式2  元素类型[] 数组名=new 元素类型[]{元素,元素,……}
Int[] arr=new int[]{3,5};      int[] arr={3,5,1,7};
内存结构:栈内存:用于存储局部变量,当数据使用完,所占空间自动释放。
  堆内存:数组和对象,通过new建立的实例存放在堆内存中。
每一个实体都有内存地址
实体中的变量都有默认初始化值
实体不在使用,会在不确定的时间内被垃圾回收器回收。
打印数组的所有元素     数组元素求和  打印数组与定义时的数组格式一样


//打印数组中所有元素
class TextArray{
    public static void main(String[] args){
        int[] arr=new int[6];
        for(int x=0;x<arr.length;x++)
        System.out.println("arr["+x+"]="+arr[x]);
}
}

//打印所有数组元素的和
class TextArray_2{
    public static void main(String[] args){
        int[] arr={2,4,6,1,7,9};
        int sum=0;
        for(int x=0;x<arr.length;x++){
        sum=sum+arr[x];}
        System.out.println("sum="+sum);
}
}

//打印数组元素用,隔开
class TextArray_3{
    public static void main(String[] args){
        int[] arr={4,6,2,3,8,12};
        System.out.print("[");
        for(int x=0;x<arr.length;x++){
        if( x!=arr.length-1)
        System.out.print(arr[x]+",");
        else
        System.out.println(arr[x]+"]");}

}

数组的获取最大值

/*class GetMax{
  public static int getMax(int[] arr){
        int temp=arr[0];
        for(int x=1;x<arr.length;x++){
        if(arr[x]>temp)
        temp=arr[x];}
        return temp;
}
    public static void main(String[] args){
        int[] arr={3,5,7,2,87,34};
        int a=getMax(arr);
        System.out.print(a);}
} */
//另一种方式
class GetMax{
    public static int getMax(int[] arr){
        int temp=0;
        for(int x=1;x<arr.length;x++){
        if(arr[x]>arr[temp])
        temp=x;}
         return arr[temp];
}
    public static void main(String[] args){
        int[] arr={3,5,7,8,9,1,2};
        int b=getMax(arr);
        System.out.print(b);}
}




}       





数据的排序小程序
class ArraySort{
    public static void arraySort(int[] arr){
        int temp=0;
        for(int x=0;x<arr.length-1;x++){
        for(int y=x+1;y<arr.length;y++){
        if(arr[x]<arr[y]){
        temp=arr[x];
        arr[x]=arr[y];
        arr[y]=temp;}
}
}
}      
    public static void main(String[] args){
        int[] arr={3,5,1,2,6,8,4};
        arraySort(arr);
        for(int x=0;x<arr.length;x++)
        System.out.println(arr[x]);
}
}             


冒泡排序
class MaoP{
        public static void maoPao(int[] arr){
                int temp=0;
                for(int x=0;x<arr.length-1;x++){
                        for(int y=0;y<arr.length-x-1;y++){
                                if(arr[y]<arr[y+1]){
                                        temp=arr[y];
                                        arr[y]=arr[y+1];
                                        arr[y+1]=temp;
                                }
                        }
                }
        }
        public static void main(String[] args){
                int[] arr={3,5,11,7,8,2,9,11};
                maoPao(arr);
                for(int x=0;x<arr.length;x++){
                        System.out.println(arr[x]);
                }
        }
}



折半查找法

class ZheBanCZ{
        public static int zheBan(int[] arr,int a ){
                int m=0;int n=arr.length;int min=(m+n)/2;
                while(arr[min]!=a){
                if(arr[min]<a)
                            m=m+1;
                else if(arr[min]>a)
                            n=n-1;
                    min=(m+n)/2;
                    if(min>n)
                            return -1;
            }
                return min;
                }
                public static void main(String[] args){
                        int[] arr={2,4,6,8,12,21};
                      int a =zheBan(arr,1);
                      System.out.println(a);               
                }

}


十进制转换成二进制,八进制,十六进制的小程序。
//其中,a代表输入的数,m与的数(二进制是1八进制7十六进制是15)n代表右移数(二进制是1位八进制是3位十六进制是4位)
class ToBHB{
        public static void main(String[] args){
                toBin(60);
                toHex(60);
                toOctal(60);
        }
        public static void toBin(int a){
                toBHB(a,1,1);
        }
        public static void toHex(int a){
                toBHB(a,15,4);
        }
        public static void toOctal(int a){
                toBHB(a,7,3);
        }
        public static void toBHB(int a,int m,int n){
                char[] chs={'0','1','2','3','4','5','6','7','8','9','a','b','c','e','f'};
                char[] arr=new char[32];
                int pos=arr.length;
                while(a!=0){
                        int temp=a&m;
                        arr[--pos]=chs[temp];
                        a=a>>>n;
                }
                for(int x=pos;x<arr.length;x++){
                        System.out.print(arr[x]);
                }
        }
}

作者: 李振在黑马    时间: 2015-9-11 15:33
不好意思,忘了a=0的情况了在public static void toBHB(){
后变加一个if判断语句如果a==0那么打印输出0并return返回不需执行后边的代码了
作者: 倦鸟识山    时间: 2015-9-11 18:05
都是新手 你看到哪了
作者: shike951128    时间: 2015-9-11 18:17
总结的不错。
作者: 夏木南生    时间: 2015-9-11 18:49
一切为了技术分啊
作者: kenfans    时间: 2015-9-11 20:26
加油,给你鼓励
作者: 时间橡皮1    时间: 2015-9-11 21:59
加油加油,一起加油
作者: kuikui    时间: 2015-9-11 22:54
很熟悉,敲了N次了
作者: outxf003    时间: 2015-9-11 23:00
好认真!点个赞哥们!一起加油!
作者: 李振在黑马    时间: 2015-9-12 21:57
倦鸟识山 发表于 2015-9-11 18:05
都是新手 你看到哪了

面向对象this的应用,看到这里有点卡壳,正试着敲代码。
作者: Vincent饭饭    时间: 2015-9-12 22:03
都是新手+1,态度决定一切
作者: heima_jinchen    时间: 2015-9-12 22:06
希望媒体进步一点点!!!
作者: yongyinqi    时间: 2015-9-12 22:08
加油加油加油加油加油
作者: 淡忘、悲年华    时间: 2015-9-12 22:19
加油,继续努力.
作者: yonghong_cui    时间: 2015-9-12 22:39
,,,支持下,同样
作者: yonghong_cui    时间: 2015-9-12 22:40
再打个酱油吧,
作者: xiaoxiaofei    时间: 2015-9-12 22:58
赞!!!!!!!!!!!
作者: hejin67410    时间: 2015-9-13 08:46
很好的笔记




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2