实训二java面向对象的定义和初始化和重载和构造方法,String的两个赋值方式

    技术2024-04-18  82

     类的定义和对象和类的关系

     

    /* 类与对象的关系: 类是对象的模板 对象是类的实例. 对象的所有属性和功能必须在类中定义. 类的定义格式: class 类名称{ 属性; 方法; } 对象的定义格式:类名 对象名 = new 类名(); 访问类中的属性:对象名.属性 访问类中的方法:对象名.方法 */ class ClassDemo { public static void main(String[] args) { //Scanner input = new Scanner(System.in) //Random r = new Random(); //对象的定义格式: 类名称 对象名 = new 类名称(); Person p1 = new Person();//实例化一个Person对象,对象名为 p1 //访问类中的属性:对象名.属性 System.out.println(p1.name); System.out.println(p1.age); p1.name = "张三"; p1.age = 20; System.out.println(p1.name); System.out.println(p1.age); //访问类中的方法:对象名.方法名(); p1.eat(); p1.sleep(); p1.say(); } } /* 定义一个人类 */ class Person{ //属性:相当与特征 String name; int age; //方法:相当与行为,(动词定义为方法) //吃饭的方法 void eat(){ System.out.println("吃......"); } //睡觉的方法 void sleep(){ System.out.println("sleep......."); } //自我介绍的方法 void say(){ System.out.println("我的名字叫:" + name + ", 我今年" + age + "岁"); } } class Person{ String name; int age; void say(){ System.out.println("name = " + name + ", age = " + age); } } class PersonDemo2 { public static void main(String[] args) { Person p1 = new Person(); p1.say(); p1.name = "张三"; p1.say(); p1.age = 20; p1.say(); Person p2 = new Person(); p2.name = "李四"; p2.age = 22; p2.say(); } }

     

    有参数的方法的使用

    class Dog{ String name; void say(){ System.out.println("我叫" + name); } void sleep(String music){ System.out.println("我正听着" + music + "睡觉觉"); } int getAge(int year1,int year2){ int year = year2-year1; return year; } } class ClassDemo2 { public static void main(String[] args) { Dog d = new Dog(); d.name = "你大爷"; int age = d.getAge(2015,2020); System.out.println(d.name + "今年" + age + "岁了"); d.say(); d.sleep("<一狗饮酒醉>"); Dog d2 = new Dog(); d2.name = "你大娘"; d2.say(); d2.sleep("<小苹果>"); } }

     

    class Person{ //人的姓名 String name; //人的年龄 int age; //人的身高 int shenGao; //人的性别: String sex; //说话的方法 void say(){ System.out.println("我是" + name + ",我在说话"); } //....nextInt(int num){} //吃饭的方法 void eat(String food){//形式参数列表 形参 System.out.println("我在吃" + food); } } class PersonDemo { public static void main(String[] args) { //对象名.属性名 = 值 Person p1 = new Person(); p1.name = "小白"; p1.age = 18; p1.shenGao = 178; p1.sex = "女"; p1.say(); //r.nextInt(16); 实际参数列表 实参 p1.eat("麻辣小龙虾"); /* MathUtils mu = new MathUtils(); mu.add(5,3); */ } } class MathUtils{ //两个数相加,输出结果 void add(int num1, int num2){ int result = num1 + num2; System.out.println(result); //要把两个数加在一起,输出结果. } /* void jieShaoGirl(.......){ } */ }

    构造方法:     格式:名称与类名相同,无返回类型的声明

        1.在创建对象的时候被调用.通常在构造方法中做一些对象的初始化操作.     2.当我们没有添加构造方法时,java会帮我们添加一个默认的无参的什么都不做的构造方法.          当显示的写出构造方法的时候,必须显示的写出无参的构造方法.

     

    /* 构造方法: 格式:名称与类名相同,无返回类型的声明 1.在创建对象的时候被调用.通常在构造方法中做一些对象的初始化操作. 2.当我们没有添加构造方法时,java会帮我们添加一个默认的无参的什么都不做的构造方法. 当显示的写出构造方法的时候,必须显示的写出无参的构造方法. */ class Person{ private String name; private int age; private int shenGao; public Person(){ System.out.println("无参构造方法被调用......"); } public Person(String n,int a){//n = "小花花" a=28 System.out.println("两个参数的构造方法被调用......"); name = n; age = a; } public Person(String n,int a, int sg){ System.out.println("三个参数的构造方法被调用......"); name = n; age = a; shenGao = sg; } public void setName(String n){ name = n; } public String getName(){ return name; } public void setAge(int a){ age = a; } public int getAge(){ return age; } public void setShenGao(int sg){ shenGao = sg; } public int getShenGao(){ return shenGao; } public String show(){ return "name = " + name + ", age = " + age + ", shenGao = " + shenGao; } } class GouZaoDemo { public static void main(String[] args) { Person p1 = new Person("小花花",28,178); System.out.println(p1.show()); //Person p2 = new Person(); //Person p3 = new Person(); } }

     构造方法的使用

    class Person{ public Person(){} public Person(int a){} public Person(String n,int a){} public Person(String n,int a,int height){} } class GouZaoDemo2 { public static void main(String[] args) { Person p1 = new Person(1); } }

    方法的重载:发生在同一个类中,方法名相同,参数列表或参数个数不同

    /* 方法的重载:发生在同一个类中,方法名相同,参数类型或参数个数不同 */ class OvverLoadingDemo { public static void main(String[] args) { MathUtils mu = new MathUtils(); int result1 = mu.add(5,6); System.out.println(result1); float result2 = mu.add(3.14f,3.15f); System.out.println(result2); } } class MathUtils{ public int add(int a){} public int add(int a,int b){ return a+b; } public float add(float a,float b){ return a+b; } }

    private:私有化的,只能在本类中访问.     对于封装的属性,必须对外提供公共的访问接口.     也就是标准的 Get Set 方法.

    /* private:私有化的,只能在本类中访问. 对于封装的属性,必须对外提供公共的访问接口. 也就是标准的 Get Set 方法. */ class Person{ String name; private int age; //给年龄赋值的方法. public void setAge(int a){ if (a >= 0 && a < 120){ age = a; } } //获取年龄的方法 public int getAge(){ return age; } void say(){ System.out.println("name = " + name + ", age = " + age); } } class PrivateDemo1 { public static void main(String[] args) { Person p1 = new Person(); p1.name = "小花花"; p1.setAge(288); //p1.age = -288; p1.say(); System.out.println(p1.getAge()); } }

     

    class Person{ private String name; private int age; private String sex; private int height; public void setName(String n){ name = n; } public String getName(){ return name; } public void setAge(int a){ age = a; } public int getAge(){ return age; } public void setSex(String s){ sex = s; } public String getSex(){ return sex; } public void setHeight(int h){ height = h; } public int getHeight(){ return height; } void say(){} void sleep(){} void run(){} } class PrivateDemo2 { public static void main(String[] args) { Person p1 = new Person(); p1.setName("张三"); System.out.println(p1.getName()); } }

     String的两种赋值方式:     一.直接赋值     二.使用构造方法赋值

    /* String的两种赋值方式: 一.直接赋值 二.使用构造方法赋值 */ class StringDemo1 { public static void main(String[] args) { String str1 = "baige"; String str2 = new String("baige"); System.out.println(str2); } } class StringDemo2 { public static void main(String[] args) { String str1 = "baige"; String str2 = "baige"; String str3 = new String("baige"); //使用== 基本数据类型判断的是指,引用数据类型判断的是地址 System.out.println(str1 == str2);//false System.out.println(str2 == str3);//true System.out.println(str1 == str3);//false } }

     String是引用类型的数据,赋值是指向地址空间的,new 会重新开辟内存空间的

     String的使用

    class StringDemo3 { public static void main(String[] args) { String str = "baigejinnian18sui"; char c = str.charAt(5); System.out.println(c); char[] cs = str.toCharArray(); for (int i = 0; i < cs.length; i++){ System.out.print(cs[i] + ", "); } System.out.println(); String str2 = new String(cs); System.out.println(str2); } }

     

    Processed: 0.010, SQL: 9