JAVA自学笔记(2)

Java跳跃级知识储备

1.Mathod新篇章

1.0进制转化(方法中的参数其实就是局部变量,在方法中定义的变量要赋初值)

import java.util.Scanner;

public class Main//进制转化
{
    public static void main(String[] args) {
        Scanner input =new Scanner(System.in);
        int num=input.nextInt();
        System.out.println(DecToHex(num));
        String s=input.next();
        System.out.println(HexToDec(s));
    }
    public static int HexToDec(String s)
    {
        int sum=0,k=0;
        for(int i=s.length()-1;i>=0;i--)
        {
            char ch=s.charAt(i);
            if(ch>='0'&&ch<='9')
            {
                sum+=(ch-'0')*Math.pow(16, k);
            }
            else 
            {
                sum+=(ch-'A'+10)*Math.pow(16,k);
            }
            k++;
        }
        return sum;
    }
    public static String DecToHex(int num)
    {
        String s="";
        int t;
        char ch;
        while(num!=0)
        {
            t=num%16;
            if(t>=0&&t<=9)
            {
                ch=(char) (t+'0');
            }
            else 
            {
                ch=(char) (t-10+'A');
            }
            s=ch+s;
            num/=16;
        }
        return s;
    }
    }

2.0 方法重载

 重载指的是方法名称相同,参数列表不同,编译器会根据方法签名决定调用哪个方法

 注意:1.有时候调用方法会有两个或更多可能的匹配,编译器无法判断哪个更为精确,这称为歧义调用。

 2.被重载的方法必须具有不同的参数列表

import java.util.Scanner;

public class Main
{
    public static void main(String[] args) {
        Scanner input =new Scanner(System.in);
        double num1=input.nextDouble();
        double num2=input.nextDouble() ;
        System.out.println(max(num1,num2));//编译器会自己决定调用哪一个
        
    }
    public static int max(int a,int b)
    {
        return a>b ? a:b;
    }
    public static double max(double a,double b)
    {
        return a>b? a:b;
    }
}

 3.0 可变参数

 

 

public class Main{
    public static int size;
    public static int sum=0;
    public static void main(String[] args) {
        int method = method(19,32,27,458);//计算0-n个数的和
        System.out.println(sum);//536
        System.out.println(size);//4
    }

    private static int method(int...arc) {
        size=arc.length;
        for (int i : arc) {
            sum+=i;
        }
        return sum;
    }
}

  

 

 

 

2.0 面向对象的思考

   万物皆对象!

   使用面向对象思想描述现实世界:基本步骤 

   1.发现类 2.找出属性(名词)3.找出行为(动词) ——数据抽象:是数据和处理方法的结合。

     如何使用这一方法(思想)看下面的一个小样例

 

public class Actor {
    public String name;
    public String sex;
    public int age ;
    public void show(){
        System.out.println(name+"\t"+sex+"\t"+age);
    }
}

 

public class Main{
    public static void main(String[] args) {
        Actor actor1=new Actor();//Actor这个类自定义出来的 需要构造新的类
        Actor actor2=new Actor();
        actor1.name="V";
        actor1.age=25;
        actor1.sex="男";
        actor1.show();
        actor2.name="JK";
        actor2.age=23;
        actor2.sex="男";
        actor2.show();
    }
}

 

  这种方法比较麻烦 我们可以采用构造方法 将代码简化

  修改后为 

   

public class Actor {
    public String name;
    public String sex;
    public int age ;
    public Actor(){};
    public Actor(String name1,String sex1,int age1 )
    {
        name=name1;
        sex=sex1;
        age=age1;
    }
    public void show(){
        System.out.println(name+"\t"+sex+"\t"+age);
    }
}
public class Main{
    public static void main(String[] args) {
        Actor actor1=new Actor("V","男",25);
        Actor actor2=new Actor("JK","男",23);
        /*
         * 如果不传参数的话就会报错 因为在原来的类中系统默认构造了一个
         * public Actor()
         * {
         * }
         * 而用户已经构造 会覆盖系统默认的 只需要在原来构造类中添加即可
         * */
        actor1.show();
        actor2.show();
    }
}

关于构造方法:

1.没有返回值类型 2.名称与类名一致.3.可以指定参数及实现重载 4.注意隐式构造和参数化构造不能共有

   

3.0 ArrayList动态数组——真香系列

敲黑板!

ArrayList不同于普通数组的最大区别是它可以更改数组的长度 操作起来便利

ArrayList如果希望存储基本类型 存储基本类型的包装类

集合也可以做参数

 

下面ArrayList的练习

1)存储1-33的6个随机数字 并遍历打印

import java.util.ArrayList;
import java.util.Random;

public class Practice {
    public static void main(String[] args) {
        ArrayList<Integer> list=new ArrayList<>();
        Random r=new Random();
        for(int i=0;i<6;i++)
        {
            int num=r.nextInt(33)+1;
            list.add(num);
        }
        for(int i=0;i<list.size();i++)
        {
            System.out.print(list.get(i)+" ");
        }
        
    }
}

 2)存储自定义类 题目为存储学生类型 姓名以及学生年龄

public class Student {
    private String name;
    private int age;
    public Student() {}
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    
    
}
import java.util.ArrayList;

public class Practice {
    public static void main(String[] args) {
    ArrayList<Student> list=new ArrayList<>();
    Student one =new Student("金泰亨",25);
    Student two =new Student("田柾国",23);
    list.add(one);
    list.add(two);
    for(int i=0;i<list.size();i++)
    {
        Student stu=list.get(i);//放入的是学生类 拿出的也是学生类
        System.out.println("姓名:"+stu.getName()+" "+"年龄:"+stu.getAge());
    }
    }
}

3)筛选集合里的偶数 放到小集合里

import java.util.ArrayList;
import java.util.Random;

public class Practice {
    public static void main(String[] args) {
    ArrayList<Integer> biglist=new ArrayList<>();
    Random r=new Random();
    for(int i=0;i<100;i++)
    {
        int num=r.nextInt(101);
        biglist.add(num);
    }
        ArrayList small= getlists(biglist);
        System.out.println("小集合里的元素个数为:"+small.size());
        for(int j=0;j<small.size();j++)
        {
            System.out.print(small.get(j)+" ");
        }
    }
    public static ArrayList<Integer> getlists(ArrayList<Integer> biglist)
    {
        ArrayList<Integer> small = new ArrayList<>();
        for(int i=0;i<biglist.size();i++)
        {
            int num=biglist.get(i);
            if(num%2==0)
            {
                small.add(num);
            }
        }
        return small;
    }
}

 

posted @ 2020-05-23 19:03  YUNNEN  阅读(288)  评论(0编辑  收藏  举报