黑马程序员技术交流社区

标题: 方法的基本步骤Static关键字 [打印本页]

作者: 马赛    时间: 2015-12-15 23:27
标题: 方法的基本步骤Static关键字
一、构造方法(重点、掌握)
构造方法是用来创建对象的,写法和前边学到的public static void xxx 和 public void xxx 类似
只不过构造方法没有返回值,也没有void,方法名要和类名一模一样
构造方法分为无参构造方法和有参构造方法,自己如果没有写构造方法,系统会有一个默认的无参构造方法

Student类的构造方法
class Student{
        String name;
        int age;
        //无参构造方法
        public Student(){
       
        }
        //有参构造方法
        public Student(String name, int age){
                this.name = name;
                this.age = age;
        }
}
成员变量的赋值方法
1,set和get方法
2,构造方法传递参数

二、成员方法的分类和使用
        1、无返回值
        public void noValue(){
                System.out.println(100);
        }
        2、有返回值
        public int hasValue(){       
                return 100+200;
        }
        3、有参
        public void hasParam(int num){
                System.out.println(num);
        }
        4、无参
        public void noParam(){
                System.out.print("100+200");
        }
三、基本类的标准写法
        这个是老师的经验分享,写类的一般步骤
        1,private属性
        2,构造方法,先写无参再写有参的
        3,成员方法
        4,set和get方法
        5,用不到的可以不写,代码依附于需求
拿Student当例子
class Student{
        private String name;       
        private int age;
        public Student(){
       
        }
        public Student(String name, int age){
                this.name = name;
                this.age = age;
        }
        public void study(){
                System.out.println(name + "今年" + age + "岁");
        }
        public void setName(String name){
                this.name = name;
        }
        public String getName(){
                return name;
        }
        public void setAge(int age){
                this.age = age;
        }
        public int getAge(){
                return age;
        }
}
class StudentDemo{
        public static void main(String[] args){
                //使用set方法赋值
                Student s1 = new Student();
                s1.setName("张三");
                s1.setAge(18);
                s1.study();
                System.out.println("-----");
                //使用构造方法赋值
                Student s2 = new Student("李四", 20);
                s2.study();
        }
}
四、创建一个对象的步骤
        同第六天
五、static关键字
        方法区里边有一个静态区,可以放静态变量和静态方法,static数据就放在方法区
        静态的东西随着类的加载而加载
        优先于对象存在
        静态变量可以被公用
        如果一个变量需要被对象共享,就应该使用static关键字
        直接通过类名调用,最开始学习方法的时候都是用的static修饰
        静态只能调用静态
        静态变量和成员变量的区别
        静态变量属于类,随着类的加载而加载
        成员变量属于对象,随着对象的创建而加载
        静态变量存储在方法区中的静态区
        成员变量存储在堆内存
        静态变量优先于成员变量,所以不能用对象.来调用静态变量
六、main方法
        public static void main(String []){}
        public : 公共的,权限最大的
        static : 静态的,通过类名.直接调用
        void :没有返回值的
        main :一个被特殊化的方法名,如果写错,java虚拟机不会启动
        String[] args :字符串数组类型的参数,以前用于接收键盘录入
        在控制台输入 java 类名.java 数据1 数据2 数据3 ...
        会传入字符串类型的参数
        可以通过以下代码获得args的内存地址
        class Demo{
                public static void main(String[] args){
                        System.out.println(args);
                }
        }
七、Api文档
       
        /**
         * 当前类是可以对数组做常见操作的类
         *
         * @author 王鹏 18888888888
         * @version 1.0 2015-11-29 17:27:00
         */
        public class ArrayTool {
                private ArrayTool() {}
        /**
         * 遍历数组中的每个元素,显示出来
         * @param arr 请传入一个数组
         */
                public static void print(int[] arr) {
                        ...
                }

        /**
         * 判断num数字是否存在数组arr中,返回它的下标位置
         * @param arr 请传递一个数组
         * @param num 请传入一个数字
         * @return -1、没有找到,否则返回下标值
         */
                public static int getIndex(int[] arr, int num) {
                        ...
                }
        }

通过Api查看Math方法,Math方法的父类是java.lang,所以不用导包,因为lang包里的方法会
经常被用到
基本的数学方法都可以在Math类中找到
Math没有构造,都是静态成员和方法,直接用Math.调用
学习Math类中的random随机数方法(大于0小于1)
获得1-100之间的随机数的代码
//定义一个猜数字游戏
import java.util.Scanner;

class GuessGame{
        public static void main(String[] args){
                //使用Math类中的random方法
                //random方法返回的是double类型,需要强制转换
                int randomNum = (int)(Math.random()*100)+1;
                Scanner sc = new Scanner(System.in);
                //人机交互
                System.out.println("请输入你猜的数字(1-100)");
               
                //因为不知道循环次数,所以使用while循环
                while(true){
                int guessNum = sc.nextInt();
                        if(guessNum > randomNum){
                                System.out.println("大了,请重猜");
                        }else if(guessNum < randomNum){
                                System.out.println("小了,请重猜");
                        }else{
                                System.out.println("恭喜,猜对了");
                                break;
                        }
                }
                System.out.println("游戏结束!");

        }
}






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