# Day03-Java基础

简介: # Day03-Java基础

Day03-Java

文章目录

1、private实现封装处理

如果像想要知道封装,首先必须清楚如果没有封装会怎么样?

没有封装方法中的属性,在所有方法被调用后都可以进行无权限的访问。而当进行了封装操作之后,在实例化对象访问该方法的时候会出现无法访问的问题。

TestDemo1.java:11: 错误: name 在 Person 中是 private 访问控制
                per.name = "张三";
                   ^
TestDemo1.java:12: 错误: age 在 Person 中是 private 访问控制
                per.age = 13;
                   ^
2 个错误

解决该问题就需要通过getter、setter进行赋值、取值的操作。

class Person{
  private String name;
  private int 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;
  }
  public void info(){
    System.out.println("name = "+ name +" \nage = " + age);
  }
}
public class TestDemo1{
  public static void main(String args[]){
    Person per = new Person();
    per.setName("张三");
    per.setAge(13);
    per.info();
  }
}

image.png

private实现封装的最大特征在于:只允许本类,而不允许外类访问

private只是封装的第一步,如果要学明白,还需要学习多态、继承。

2、构造方法与匿名对象

构造方法就是在使用关键字new实例化新对象的时候进行调用,但是对于构造方法需要遵守以下原则

  • 方法名称必须与类名称相同,并且构造的方法没有返回值,每个类中一定至少有一个构造方法,如果类中没有明确的定义任何一个构造方法,如果类中没有定义任何一个构造方法,那么将自动生成一个无参的构造方法
  • 构造方法是在new对象的时候才执行

疑问:既然构造方法中没有返回数据,为什么不使用void囊?

现在类中的组成:属性、普通方法、构造方法

属性是在对象开辟堆内存的时候开辟空间

构造方法是在使用关键字new的同时调用

普通方法是在new实例化对象完成之后进行调用的

构造方法的作用:

  • 构造方法的调用和对象的内存分配几乎是同步完成,所以可以利用构造方法设置类中的属性内容,构造帆帆噶可以给类中的属性进行初始化
  • 通过构造方法设置内容,实际上可以避免重复的setter调用了
  • setter方法除了具备有设置内容之外,也可以承担修改数据的操作。
  • 既然构造方法本身属于方法,那么方法就一定可以重载,而构造方法的重载更加简单,因为方法名称就是类名称所以能够做的只是实现参数的类型和个数的不同。

在定义若干个构造方法的时候按照参数的个数采用升序或降序进行排列。

class Person{
  private String name;
  private int age;
  public Person(){}
  public Person(String name){
    name = name;
  }
  public Person(String name, int age){
    name = name;
    age = 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;
  }
  public void info(){
    System.out.println("name = "+ name +" \nage = " + age);
  }
}
public class TestDemo1{
  public static void main(String args[]){
    Person per = new Person("李四",80);
    per.setName("张三");
    per.setAge(13);
    per.info();
  }
}

image.png

3、简单java类

class Emp{
  private int empno;
  private String ename;
  private String job;
  private double sal;
  private double comm;
  public Emp(int no,String name,String j,double s,double c){
    setEmpno(no);
    setEname(name);
    setJob(j);
    setSal(s);
    setComm(c);
  }
  public void setEmpno(int no){
    empno = no;
  }
  public void setEname(String name){
    ename = name;
  }
  public void setJob(String job){
    job = job;
  }
  public void setSal(double s){
    sal = s;
  }
  public void setComm(double c ){
    comm = c;
  }
  public int getEmpnoP(){
    return empno;
  }
  public String getEname(){
    return ename;
  }
  public String getJob(){
    return job;
  }
  public double getSal(){
    return sal;
  }
  public double getComm(){
    return comm;
  }
  public String getInfo(){
    return "empno = " + empno + "\n" +
        "ename = " +ename + "\n" +
        "job = " +job + "\n" +
        "sal = " +sal + "\n" +
        "comm = " +comm ;
  }
}
public class TestDemo2{
  public static void main(String args[]){
    //测试类
        System.out.printf(new Emp(2021,"Joker","CEO",2000.0,0.0).getInfo());
  }
}

4、数组

数组属于引用类型,所以在使用前一定要开辟空间,本身除了声明并开辟空间之外还有另一种开辟模式,采用我们的分布模式开辟数组空间。如果使用数组不开辟空间,会出现NullPointerException异常。

public class TestDemo3{
  public static void main(String args[]){
    //第一种声明的方式
    int [] num = new int [3];
    //第二种声明数组的方式
    int [] num = null;
    num = new int [3];
    num[0] = 0;
    num[1] = 1;
    num[2] = 2;
    for(int i = 0;i < num.length ; i++){
      System.out.println(num[i]);
    }
  }
}

数组在开发之中一定会使用,但是像一些讲解的时候这么用的数组少了,在以后实际开发,会更多使用数组概念,而直接使用数组99%的情况下只是做for循环数组。


目录
相关文章
|
7月前
|
存储 缓存 Java
最新Java基础系列课程--Day10-IO流文件处理
最新Java基础系列课程--Day10-IO流文件处理
|
7月前
|
存储 Java
最新Java基础系列课程--Day10-IO流文件处理(一)
最新Java基础系列课程--Day10-IO流文件处理
|
2月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
92 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
6月前
|
Java
【Java基础】输入输出流(IO流)
Java基础、输入输出流、IO流、流的概念、输入输出流的类层次结构图、使用 InputStream 和 OutputStream流类、使用 Reader 和 Writer 流类
222 2
|
3月前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
|
6月前
|
安全 Java
|
6月前
|
搜索推荐 算法 Java
【Java基础】 几种简单的算法排序
几种简单的JAVA算法排序
56 4
|
6月前
|
存储 缓存 Java
Java基础17-读懂Java IO流和常见面试题(二)
Java基础17-读懂Java IO流和常见面试题(二)
48 0
|
6月前
|
存储 Java Unix
Java基础17-读懂Java IO流和常见面试题(一)
Java基础16-读懂Java IO流和常见面试题(一)
80 0
|
7月前
|
Java
Java基础教程(12)-Java中的IO流
【4月更文挑战第12天】Java IO涉及输入输出,包括从外部读取数据到内存(如文件、网络)和从内存输出到外部。流是信息传输的抽象,分为字节流和字符流。字节流处理二进制数据,如InputStream和OutputStream,而字符流处理Unicode字符,如Reader和Writer。File对象用于文件和目录操作,Path对象简化了路径处理。ZipInputStream和ZipOutputStream则用于读写zip文件。