zoukankan      html  css  js  c++  java
  • java 9. 面向对象之方法设计

    **类中的方法 ---- > 做一件事情

    描述一个方法
    权限修饰符 [特征修饰符] 返回值类型 方法名字 (参数列表) [抛出异常] [{
    	方法体
    }]
    
    必须有的结构
    权限修饰符 返回值类型 方法名字 () {
    	
    }
    
    
    
    1. 无参数无返回值
    2. 无参数有返回值
    3. 有参数无返回值
    4. 有参数有返回值
    

    Person.java

    public class Person {
        public String name;
        public int age;
        public String sex;
    
        // 无参数无返回值
        public void eat(){
            System.out.println("吃了一碗大米饭");
        }
        //无参数有返回值
        public String tellName(){
            return "Java";
        }
        //无参数有返回值
        public void newEat(int count,String sth){
            System.out.println("吃了"+count+"碗"+sth);
        }
        //有参数有返回值
        public String buyDrink(int money){
            if(money>5){
                return "红牛";
            }else{
                return "矿泉水";
            }
        }
    

    Test.java

    import com.sun.prism.shader.Solid_ImagePattern_Loader;
    
    public class Test {
        public static void main(String[] args) {
            //方法
            // 无参数无返回值
            Person p = new Person();
    //        p.eat();
    //        p.name = "test";
            //无参数有返回值
    //        String myName = p.tellName();
    //        System.out.println("接收到了tellName方法的返回值:"+myName);
            //有参数无返回值
            //p.newEat(3,"过桥米线");
            //有参数有返回值
            String buyD = p.buyDrink(10);
            System.out.println("我买了一瓶"+buyD);
    
            // 属性
    //        Person p = new Person();
    //        System.out.println(p.name);
    //        p.name = "吸溜";
    //        p.age = 18;
    //        p.sex = "男";
    //        System.out.println(p.name+"今年"+p.age+"岁,性别是"+p.sex);
    //        Person p2 = new Person();
    //        Person p1 = p;
    //        p1.name = "小姐姐";
    //        p1.age = 16;
    //        p1.sex = "女";
    //        System.out.println(p.name+"今年"+p.age+"岁,性别是"+p.sex);
    //        System.out.println(p1.name+"今年"+p1.age+"岁,性别是"+p1.sex);
    
        }
    }
    

    练习题

    1. 设计一个方法,用来画星星,倒三角 行数不确定,方向不确定
    ****
    ***
    **
    *
    
    ****
     ***   
      **
       *
    
    空格0,1,2,3
    *  4,3,2,1
    
    -- 方法
    
    public class Person {
        //画星星
        //f:true 偏左 没空格,false 偏右 带空格
        public void drawStar(int line,boolean f){
            for(int i=1;i<=line;i++){
                if(!f){
                    for(int j=1;j<=line-i;j++){
                        System.out.print(" ");
                    }
                }
                for(int j=1;j<=i;j++){
                    System.out.print("*");
                }
                System.out.println();
            }
        }
    }
    
    --main
    
    package method_one;
    
    public class Test {
        public static void main(String[] args) {
            //画星星
            p.drawStar(4,false);
        }
    }
    
    1. 设计一个方法,用来交换两个数组元素a{1,2,3,4} b{5,6,7,8}
    import java.util.Arrays;
    
    public class Demo {
        //设计一个方法,用来交换两个数组元素a{1,2,3,4}  b{5,6,7,8}
        public int[][] ArrNumjiaohuan(int[] a, int[] b){
            //将两个数组的地址引用直接互换
            int[] temp = a;
            a = b;
            b = temp;
            int[][] result = {a,b};
            return result;
        }
    
    
        public static void main(String[] args) {
            Demo p = new Demo();
            //设计一个方法,用来交换两个数组元素a{1,2,3,4}  b{5,6,7,8}
            int[] arra={1,2,3,4};
            int[] arrb={5,6,7,8,9};
            int[][] value = p.ArrNumjiaohuan(arra,arrb);
            arra = value[0];
            arrb = value[1];
            System.out.println(Arrays.toString(arra));
            System.out.println(Arrays.toString(arrb));
        }
    }
    
    1. 设计一个方法,用来交换一个数组头尾互换
    import java.util.Arrays;
    
    public class Demo {
        public static void arrHeaderEndChange(int[] args){
            System.out.println(Arrays.toString(args));
            for(int i=0;i<args.length/2;i++){
                int x = args[i];
                args[i] = args[args.length-1-i];
                args[args.length-1-i] = x;
            }
            System.out.println(Arrays.toString(args));
        }
    }
    
    1. 设计一个方法,用来寻找数组中的极值(最大 最小值)
    public class Demo{
        //给我一个数组,告诉我找最大值还是最小值,flag=false就找最小值,true找最大值
        public int findMaxOrMinNum(int[] array,boolean flag){
            int result = array[0];
            for(int i=1;i<=array.length-1;i++){
                if(flag && result<array[i]){
                    result = array[i];
                }else if(!flag && array[i]<result){
                    result = array[i];
                }
            }
            return result;
        }
    }
    
    public class Test{
        public static void main(String[] args){
            Demo d = new Demo();
            int[] arr = {2,4,6,8,0,9,1,3,5,7};
            int result = d.findMaxOrMinNum(arr,false);
            System.out.println(result);
        }
    }
    
    1. 设计一个方法,用来找寻给定的元素是否在数组内存在
    public class Demo {
        public String findNumExist(int[] array,int target){
            String result = "你输入的值"+target+"在数组中没有"; //编译检测的悲观性原则
            for(int i=0;i<=array.length-1;i++){
                if(target==array[i]){
                    result = "恭喜,你输入的值在数组中存在";
                    break;
                }
            }
            //执行for循环遍历完数组的所有元素都没有进入到if,就是不存在
            return result;
        }
    }
    
    public class Test {
        public static void main(String[] args){
            Demo d = new Demo();
            int[] arr = {1,2,3,4,5,6,7,8,9,10};
            System.out.println(d.findNumExist(arr,100));
        }
    }
    
    1. 设计一个方法,用来合并两个数组
    public class Demo{
        public int[] mergeArr(int[] a,int[] b){
            int[] bigArr = new int[a.length+b.length];
            for(int i=0;i<a.length;i++){
                bigArr[i] = a[i];
            }
            for(int i=0;i<b.length;i++){
                bigArr[a.length+i] = b[i];
            }
            return bigArr;
        }
    }
    
    import java.util.Arrays;
    public class Test{
        public static void main(String[] args){
            Demo d =new Demo();
            int[] a = {1,2,3,4};
            int[] b = {5,6,7,8,9,0};
            System.out.println(Arrays.toString(d.mergeArr(a,b)));;
        }
    }
    
    1. 设计一个方法,用来将一个数组按照最大值位置拆分
    public class Demo{
    public int[][] splitArr(int[] a){
            int max = a[0];
            int index = 0;
            for(int i=0;i<a.length;i++){
                if(a[i]>max){
                    max = a[i];
                    index = i;
                }
            }
            System.out.println("最大值的索引是:"+index);
            int[] newa = new int[index];
            int[] newb = new int[a.length-index-1];
            for(int i=0;i<newa.length;i++){
                newa[i] = a[i];
            }
            for(int i=0;i<newb.length;i++){
                newb[i] = a[index+1+i];
            }
    //        int[][] result = {newa,newb};
    //        return result;
            return new int[][]{newa,newb};
        }
    }
    
    import java.util.Arrays;
    public class Test{
        public static void main(String[] args){
            Demo d = new Demo();
            int[] arr = {1,2,3,4,5,90,6,7,8};
            int[] a = d.splitArr(arr)[0];
            int[] b = d.splitArr(arr)[1];
            System.out.println(Arrays.toString(a));
            System.out.println(Arrays.toString(b));
        }
    }
    
    1. 设计一个方法,用来去掉数组中的0元素
    public class Demo{
        public int[] delArrZeroNum(int[] array){
            //找出非0元素个数
            int count = 0;
            for(int i=0;i<array.length;i++){
                if(array[i]!=0){
                    count++;
                }
            }
            int[] newa = new int[count];
            int index = 0;
            for(int i=0;i<array.length;i++){
                if(array[i]!=0){
                    newa[index++] = array[i];
                }
            }
            return newa;
        }
    }
    
    import java.util.Arrays;
    public class Test{
        public static void main(String[] args){
            Demo d = new Demo();
            int[] arr = {1,2,3,0,0,4,5,0,6,0,7};
            System.out.println(Arrays.toString(d.delArrZeroNum(arr)));
        }
    }
    
    1. 设计一个方法,用来存储给定范围内的素数(2-100)
    public class Demo{
        public int[] arrPrime(int begin,int end){
            if(begin<0 || end<0){
                System.out.println("输入的范围不能为负数");
                return null;
            }
            if(begin>end){
                System.out.println("输入的范围不对,begin应该小于end");
                return null;
            }
            //创建一个足够大的数组存放非0元素
            int[] prime = new int[(end-begin)/2];
            int index = 0;
            for(int i=begin;i<=end;i++){
                boolean flag = false;
                for(int j=2;j<=i/2;j++){
                    if(i%j==0){
                        flag = true;
                        break;
                    }
                }
                if(!flag){
                    prime[index] = i;
                    index++;
                }
            }
            //将数组后面多余的0去掉
            int[] newPrime = new int[index];
            for(int i=0;i<prime.length;i++){
                if(prime[i]!=0){
                    newPrime[i] = prime[i];
                }
            }
            return newPrime;
        }
    }
    
    public class Test{
        public static void main(String[] args){
            Demo d = new Demo();
            System.out.println(Arrays.toString(d.arrPrime(2,100)));
        }
    }
    
    1. 设计一个方法,用来给数组元素排序(冒泡排序算法)--既能升序又能降序

    public class Demo{
        public void bubble(int[] array,boolean flag){
            for(int i=0;i<array.length-1;i++){ //比较轮次为元素个数-1
                for(int j=array.length-1;j>0;j--){
                    if((flag && array[j]<array[j-1])||(!flag && array[j]>array[j-1])){
                        int temp = array[j];
                        array[j] = array[j-1];
                        array[j-1] = temp;
                    }
                }
            }
        }
    }
    
    public class Test{
        public static void main(String[] args){
            Demo d = new Demo();
            int[] arr = {10,5,2,3,1,4};
            d.bubble(arr,true);
            System.out.println(Arrays.toString(arr));
        }
    }
    
    1. 设计一个方法,用来实现用户登录认证(二维数组当作小数据库)
    
    
    更多学习笔记移步 https://www.cnblogs.com/kknote
  • 相关阅读:
    服务器SSL不安全漏洞修复方案
    vs2010 vs2013等vs中如何统计整个项目的代码行数
    Windows10中的IIS10.0安装php manager和IIS URL 重写2.0组件的方法
    让Windows Server 2008r2 IIS7.5 ASP.NET 支持10万并发请求
    angularJS 上传multipart/form-data
    idea 取消缩进
    Java 自动检测文本文件编码
    idea 快捷键
    java 8 bug
    Python学习笔记
  • 原文地址:https://www.cnblogs.com/kknote/p/12933339.html
Copyright © 2011-2022 走看看