A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 雪莲 中级黑马   /  2016-7-1 21:54  /  891 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1、构造方法的格式是什么?有哪些注意事项?
权限修饰符 类名(参数类型 参数1,参数类型 参数2...){
        一般初始化成员变量
}
分为有参构造和无参构造,
无参构造创建的对象,需要setter来设置值,通过getter来获取值
有参构造,可以通过构造方法直接给对象设置值,可以通过getter方法来获取值

2、构造方法可以重载吗?
里边可以有return语句吗?
可以(有参)  可以(return一般不写)

3、给成员变量赋值有几种方式?有什么区别?
两种 有参构造直接赋值和set方法给成员变量赋值。
get方法获取成员变量
使用set get赋值比较灵活。

4、static关键字有什么特点,使用的时候有什么注意事项?
1)随着类的加载而加载2)优先于对象存在3)被类的所有对象共享4)可以通过类名调用。
1)静态只能访问静态2)静态方法中没有关键字this。 3)非静态的既可以访问非静态,也可以访问静态的.(方法中)

5、class Person{
                private String name = "战三";
        }

        public static void main(String[] args) {
                Person p = new Person();    // name   age
   },这段代码在内存中做了哪些事情?
   //首先主函数进栈 其中有Person 在堆中创建Person()然后给对象中属性初始化值。
   1)主方法进栈
   2)Person.class字节码文件进入方法区
   3)在主方法中声明 Person p 这个引用
   4)在堆内存中开辟空间  new Person()
   5)给这个Person() 进行默认初始化  name = null
   6)给这个Person对象进行显示初始化  name = 战三
   7)把堆内存的地址值赋值给 主方法中这个Person p 这个引用


6、静态变量和成员变量的区别是什么?
        他俩所属不同,
                静态: 属于类
                成员:属于对象
        内存中的位置不同,
                静态: 静态区
                成员:堆
        调用不同,
                静态:既可以类名调用,也可以对象调用,推荐类名调用
                成员:对象调用
        内存出现的时间不同。
                静态: 随着类的加载而加载,随着类的消失而消失
                成员:随着对象的生成而生成,随着对象的消失而消失.

7、练习使用JDK提供的帮助文档配合第11题学习Random?

8、通过Math类如何获取1-100之间的随机数?

static double random()    返回带正号的 double 值,该值大于等于 0.0 且小于 1.0


        由于是静态的可以通过类名调用方法:   
       
        1) double ran =     Math.random();                                   0.0000  - 0.9999...
        2) int ranInt =  (int)(ran*100) + 1 ;                                 1 - 100

int number = (int)(Math.random()*100)+1;

9、需求:定义一个长方形类,定义求周长和面积的方法,然后定义一个测试类进行测试。
class TestRectangle {
        public static void main(String[] args) {
                Rectangle r = new Rectangle(10,10);   //创建对象并赋值
                System.out.println(r.getArea() + "..." +r.getLength());
                Rectangle r1 = new Rectangle();
                r1.setWidth(20);
                r1.setHigh(20);
                System.out.println(r1.getArea() + "..." +r1.getLength());
        }
/*
宽width   高high
面积 getArea
周长 getlength
*/
}
class Rectangle {
        private int width;                        //宽
        private int high;                         //高
       
        public Rectangle() {}                     //无参
        public Rectangle(int width,int high) {    //有参
                this.width = width;
                this.high = high;
        }
        public void setWidth(int width) {                  //设置宽
                this.width = width;
        }
        public int getWidth() {                                          //获取宽
                return width;
        }
        public void setHigh(int high) {                          //设置高
                this.high = high;
        }
        public int getHigh() {                                          //获取高
                return high;
        }
        public int getArea() {
                return width * high;                  //面积
        }
        public int getLength() {
                return (width + high) * 2;            //周长
        }
}

10、根据需求,完成如下代码(按照标准格式写),并在测试类中进行测试。
        标准格式包含: 私有属性   无参构造  有参构造  setter 和getter 需求中的方法
        需求一:
                员工类Employee
                        属性:姓名name,工号id,工资salary
                        行为:显示所有成员信息的方法show()
class EmployeeTest {
        public static void main(String[] args) {
                Employee e = new Employee("腾腾","007",13000);
                e.show();
        }
}
class Employee {
        private String name;                                 //姓名
        private String id;                                   //id
        private double salary;                               //工资
        public Employee(){}                                  //无参
        public Employee(String name,String id,double salary){//有参
        this.name = name;
        this.id = id;
        this.salary = salary;
        }
        public void setName(String name){                    //设置姓名
                this.name = name;
        }
        public String getName(){                             //获取姓名
                return name;
        }
        public void setId(String id){                        //设置ID
                this.id = id;
        }
        public String getId(){                                                                 //获取ID
                return id;
        }
        public void setSalary(double salary){                //设置工资
                this.salary = salary;
        }
        public double getSalary(){                           //获取工资
                return salary;
        }
        public void show(){
        System.out.println("姓名:" + name + ",工号:" + id +",工资:" + salary );
        }
}
        需求二:
                动物类Animal
                        属性:姓名name,年龄age
                        行为:吃饭eat,睡觉sleep
class testAnimal {
        public static void main(String[] args){
                Animal p = new Animal();           //创建对象
                p.setName("小懒货");
                p.setAge(2);
                System.out.println(p.getName() + "..." + p.getAge());
                p.eat();
                p.sleep();
        }
}

class Animal {
        private String name;                  //名字
        private int age;                      //年龄
        public void setName(String name) {   //设置名字
                this.name = name;
        }
        public String getName() {             //获取名字
                return this.name;
        }
        public void setAge(int age) {         //设置年龄
                this.age = age;
        }
        public int getAge() {                 //获取年龄
                return this.age;
        }
        public void eat() {
                System.out.println("吃饭");
        }
        public void sleep() {
                System.out.println("睡觉");
        }

}

        需求三:
                人类Person
                        属性:姓名name,年龄age,性别gender
                        行为:学习study,睡觉sleep
class TestPerson {
        public static void main(String[] args) {
                Person p = new Person("张三",23,"男");
                System.out.println(p.getName() + "..." + p.getAge() + "..." + p.getGender());
                p.study();
                p.sleep();
        }
}
class Person {
        private String name;
        private int age;
        private String gender;
        public Person(){}                                  //无参
        public Person(String name,int age,String gender){  //有参
        this.name = name;
        this.age = age;
        this.gender = gender;
        }
        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;
        }
        public void setGender(String gender){                //设置性别
                this.gender = gender;
        }
        public String getGender(){                           //获取性别
                return gender;
        }
        public void study(){
                System.out.println("学习");
        }
        public void sleep(){
                System.out.println("睡觉");
        }
}

11.使用Math类,完成猜数字小游戏(5次机会)
import java.util.*;
class Game {
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入一个整数1到100");
                int guessGame =(int)(Math.random() * 100 + 1) ;
                for (int count = 0;count < 5 ;count++ ) {
               
                while (true) {
                        int x = sc.nextInt();
                if (x > guessGame) {
                        System.out.println("大了");
                        break;
                }else if (x < guessGame) {
                        System.out.println("小了");
                        break;
                }else {
                        System.out.println("中了");
                        break;
                        }
                }
                }
        }
}

12.根据API帮助文档自学Random类完成13题:

13.设计一个点名器, 随机打印一个学生的名字
        提示: 随机数组索引, 根据索引获取同学名称,建议使用Random类
import java.util.*;

/*
        目的: 程序一执行,就随机控制台输入一个学生的名字
       
        思路:  1.有一个容器数组(数组里面装的是学生名字的字符串)
                   2)使用Randonm类,创建一个随机数(随机数的范围是数组的长度) , 因为咱们要用生成的随机数作为数组的下标
                   3)根据下标找到对应的String 学生名字
                   4)打印这个学生的名字

*/
class Game {
        public static void main(String[] args) {
                //1.有一个容器数组(数组里面装的是学生名字的字符串)
                String[] arr = {"阿大","阿二","阿三","阿四","阿五","阿六","阿七","阿八","阿九","阿十"};
                //  2)使用Randonm类,创建一个随机数(随机数的范围是数组的长度) , 因为咱们要用生成的随机数作为数组的下标
                int game = (int)(Math.random() * 10);  //   0 - 9  随机数的范围 , game其实就是随机的索引               
                System.out.println(arr[game]);  //通过随机索引找到这个数组的人名
               
               
                String[] arr = {"阿大","阿二","阿三","阿四","阿五","阿六","阿七","阿八","阿九","阿十"};
                System.out.println(arr[new Random(arr.length)]);
        }
}



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马