Java笔记2023/4/10

文章探讨了Java中对象的生命周期,特别是当在main方法中调用一个对象如p1=eat()后,对象p1如何在栈中消亡。同时,文章介绍了类如Person、Circle、Student的使用,包括成员变量、方法调用如study(),addAge()等。此外,还讨论了方法的重载、封装概念以及不同类型的数组打印行为,例如println()方法如何根据参数类型选择合适的方法进行打印。

对象调用过后即消亡,如:

在main里调用一个p1=eat();

则在栈里调用完p1后,p1离开栈。

public class Person{
  String name;
  int age;
  char gender;
    public void stufy(){
      System.out.println("studying");  
    }
    public int showAge(){
      return age;
    }
    public void addAge(int addAge){
      age+=addAge;
    }
}
public class Person{
    public static void main(String[] args){
      Person p1=new Person();
      p1.name="Tom";
      p1.age=12;
      p1.gender='男';
      p1.study();
      p1.addAge(2);//给age+2
      int age=p1.showAge();
      System.out.println("age="+age);
    }
}
public class Exer02{
     public static void main(String[] args){
      Exer02.method3(3,8);
    }
     public void method1(){
          for(int i=0;i<10;i++){
               for(itn i=0;i<8;j++){
               System.out.println("*");
             }
         }
    }
      public void method2(){
       return 10*8;
     }
       public void method3(int m,int n){
       for(int m=0;m<10;m++){
               for(int n=0;n<8;n++){
               System.out.println("*");
             }
         }
        return m*n;
     }
}
public class Circle{
   double radius;//半径
          public void findArea(){
          System.out.println(3.14*radius*radius);
        }
}
public class circlTest{
        public static void main(String[] args){
        Circle c1=new Circle();
        c1.radius=2.3;
        c1.findArea();
        }
}
public class Student{
    int number;
    int state;//年级
    int score;
    
}
public class StudentTest{
     public static void main(String[] args){
          Student[] stu=new Student[20];
             //这里才是创建一个类数组的正确方法
             //创建20个students对象
                 students[i].number=i+1;
             //这种表示对象数组里某一个对象的属性
                 students[i].state=(int)(Math.random()*6+1);
                 students[i].score=(int)(Math.random()*101);
              //********************************************
                  StudentUtil util=new StudentUtil();
                  util.printStudentsWithState(students,3);
                  util.printStudents(students);
           for(int i=0;i<students.length;i++){
                  if(3==students[i].state){
                        Student stu=students[i];
           /*System.out.println("number:"+stu.number+“,state:” 
            +stu.state+",score:"+stu.score);*/
            //以上方式过于繁琐
             System.out.println(stu.show());
           //使用.show()函数直接把该对象属性全显示出来
             }
         }
          for(int i=0;i<student.length-1;i++){
              for(int j=0;j<student.length-1-i;j++){
                   if(students[j].score>students[j+1].score) {
                         Student temp=students[j];
                         students[j]=students[j+1]};
                         students[j+1}=temp; 
                      }
               }
         }
         for(int i=0;i<students.length;i++){
             System.out.println(students[i]);
            }
           //for里int的i只能用于for循环以内
     }
}
public class StudentUtil{
    public void printStudentsWithIndex(Student[] students,int state){
                 for(int i=0;i<students.length;i++){
                   System.out.println(stu.show());
               } 
        }
     public void students(Student[] students){
           for(int i=0;i<students.length;i++){
             System.out.println(students[i]);
            }
     }
}

封装:把一块特定的代码分开制成方法。

方法的重载:同一个类里两个或多个方法名一样但是形参列表不一样就叫重载,如:

eat(int a);和eat(String a);两个在同一个类里就是重载。“两同一不同”。 

public class OverloadTest{
       OverloadTest test=new OverloadTest();
       test.add(1,2,3);
       test.add(2,3);
       //有两个引入两个形参的add方法,那么系统会优先选择最前的
       //比如下面double型和int型,系统会选在前面的double型
       public void add(double a,double b){
              //略
       }
       
       public void add(int i,int j){
              //略
       }
       public void add(int i,int j,int k){
              //略
       }
       public void add(String s1,String s2){
              //略
       }
       public void add(itn i,String s){
              //略
       }
}
public class InterviewTest{
    public static void main(String[] args){
           int[] arr=new int[]{1,2,3};
           System.out.println(arr);
    // 打印结果为地址
           char[] arr1=new char[]{'a','b','c'};
           System.out.println(arr1);
    //打印结果 abc
           boolean[] arr2=new boolean[]{false,true,ture};
           System.out.println(arr2);
    //打印结果为地址
     }
}
原因就在于,println在系统里是一系列的方法,
如:println(boolean);println(char);println(char[]);println(double);
println(Object);等等.
比如要打印helloworld,调用的是println(String);void
打印123,调用的是println(int);void
打印123.5,调用的是println(double);void
而上面打印的是数组,那么引用的是 println(OBject);void
之所以打印出abc是因为系统内有个println(char []);void的方法
所以调用的不是默认数组打印方法println(Object);void

   

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅奈德er

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值