首页 > 编程语言 >0基础学JAVA!!!(第四天)

0基础学JAVA!!!(第四天)

时间:2024-07-19 20:54:40浏览次数:11  
标签:JAVA String 基础 System 接口 第四天 println 抽象类 public

1.包装类

整型:

Byte,Short,Integer,Long

浮点型:

Float,Double

字符型:

Character

布尔型:

Boolean

         Integer inta=21;
         Integer intb=12;
        System.out.println(inta==intb);
        Integer intac=200;
        Integer intc=200;
        System.out.println(intc==intac);
        Boolean bb=true;
        Boolean cc=true;
        Character intA=0;
        Character intB='\u0000';
        Character intC=new Character('\u0000');
        System.out.println(intA==intB);

装箱:

将基本数据类型转换成对应的包转类就是装箱

        Integer.valueOf("34");
        Integer.parseInt("12");

拆箱:

将包装类转换成对应的基本数据类型就是拆箱

包装类和基本数据类型比较的时候一般是先拆箱再比较

缓存:

包装类都有缓存,是因为在装箱操作的时候为了少占用内存,有一个字节的缓存范围是-128---127(只有int类型的缓存范围可以调整用:-XX:AutoBoxCacheMax=     ),如果需要的数值在缓存范围内直接从缓存里面拿出,不需要再new一个

         Integer inta=21;
         Integer intb=12;
        System.out.println(inta==intb);
        Integer intac=200;
        Integer intc=200;
        System.out.println(intc==intac);

整型,字符型,布尔型都有缓存

浮点型没有缓存

装箱和拆箱的操作都是自动完成的

2.包:package

1.在创建类的时候,用package包声明

2.使用本包下的类不需要导入包,使用其他包下的类需要导入包

3.*代表所有的包都需要导入

4.所有的类默认导入java.lang

5.在类重名的情况下,使用类的全称声明所需要使用的类(重名不能都导入)

6.包之间是有封装性的,没有子父之间的关系,cahpter3包下面的test包下的Circle类不属于cahpter3包

package java.lang;

import jdk.internal.misc.CDS;
import jdk.internal.misc.VM;

3.static关键字

static   静态的  类的

    int age;//(非静态)
    int age1;
    static int maxAge;(静态的)
1.static修饰的属性是属于类的   
2.可以使用类名直接调用static修饰的属性和方法
Static Object.maxAge=22;
3.静态属性对所有的对象是共享的
4.本类的对象也可以调用静态的属性和方法,
5.静态方法中不能直接调用非静态的属性,但是用对象可以调用

4.抽象类

1.抽象类

定义抽象类用abstract

抽象类中会有抽象方法,抽象类是需要被继承的,在实体类继承抽象类之后需要重写方法,抽象类没有直接实例,不能new , 但是有构造方法

在抽象类继承抽象类的时候,可以不实现抽象方法

1.抽象类中可以定义抽象方法

2.抽象类可以用来被继承

示例:实现写一个抽象卡车类, 定义一个运输的抽象方法  接受一个地址字符串  大卡车小卡车继承卡车类(这个示例用到抽象类继承,抽象方法重写等知识)

public abstract class EasyAbstract{
    public static void main(String[] args) {
        Bigkache k=new Bigkache();
        kache  k1=new Smallkache();
        k1.yunshu("我的家");
        k.yunshu("我的家");

    }
 abstract class kache{
    public abstract void yunshu(String dizhi);
    }
 class Smallkache extends kache{
    @Override
        public void yunshu(String dizhi){
        System.out.println("小卡车开往"+dizhi);
    }
    }
class Bigkache extends kache{
    @Override
    public void yunshu(String dizhi){
        System.out.println("大卡车开往"+dizhi);
    }


}

2.抽象方法

抽象方法   使用abstract修饰的方法
抽象方法没有方法体(没有大括号)

接口中定义的方法都是抽象方法,没有具体的方法体

接口中可以定义属性,但是定义的属性都是常量,String  MAX_SPEED="2222",在Sring类型前面默认有public static final,也可以写public String  MAX_SPEED="2222",在中间都会默认加上,在这里面必须声明常量必须初始化,下面这三种情况都可以

public static final String MAX_SPEED="20000";
 public  String MAX_SPEED="20000";
 String MAX_SPEED="21512"

接口中定义的方法的方法默认使用public abstract修饰

5.接口

1
JAVA中使用implements声明一个类实现接口
一个类可以实现多个接口
一个接口可以被多个类实现
一个接口使用extends继承接口
接口可以定义default修饰的实体方法
虽然使用的是default,但是实际访问权限仍然是public
interface IVehicle extends Cloneable{
default void test(){}
public static final String MAX_SPEED="20000";
        String MIN_SPEED="90";
void transport();
}
}
如果接口中只有一个未实现的方法,那这个接口称为函数式接口,上图中的void transport();可以使用@FunctionalInterface验证

class ObjectInter implements EasyInterface.IVehicle ,Cloneable, Serializable {
    //JAVA中使用implements声明一个类实现接口
    //一个类可以实现多个接口
    //一个接口使用extends继承接口
    @Override
    public void transport(){


    }
    //如果接口中只有一个未实现的方法,那这个接口称为函数式接口
}

6.final

final可以修饰类,这样这个类就不能被继承

final可以修饰方法,这样这个方法不能被重写

final可以修饰属性,这样这个属性在第一次被赋值之后不能被再次赋值

下面这些代码都可以,初始化之后就不能在变化了

final int height;
heigh=21;
        final int[] arr={1,2};
        arr[1]=12;//虽然用final修饰了,但是可以给他赋值

7.深浅拷贝

克隆要实现必须要实现Cloneable接口,如果在类外面要实现克隆,那么需要重写

浅克隆:复制了一份与自己相同的值,并且一起指向与自己相关的对象

深克隆:复制了一份与自己相同的值,并且复制了一份与自己的相关的对象,分别指向对应的对象

  public static void main(String[] args) throws CloneNotSupportedException {
Teacher tea =new Teacher("葛俊杰");
        Student stu=new Student();
        stu.teacher=tea;
        System.out.println(stu);
        Object obj=stu.clone();
        System.out.println(stu);
        stu.teacher.name="李世民";
        System.out.println(obj);
        System.out.println(stu);
    }
class Student implements Cloneable{
    Teacher teacher;



    @Override
    public String toString() {
        return "Student{" +
                "teacher=" + teacher +
                '}';
    }

    @Override
    public Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}
class Teacher implements Cloneable {
    String name;
public  Teacher(String name){
    this.name=name;
}
    public Object clone() throws CloneNotSupportedException {
    //克隆自身的同时,也要克隆关联的属性
        Object obj=super.clone();//将当前对象克隆一份
        Object objTeacher=this.teacher.clone();//将当前对象属性克隆一份
        ((Student)obj).teacher=(Teacher)objTeacher;
        return obj;
    }
    @Override
    public String toString() {
        return "Teacher{" +
                "name='" + name + '\'' +
                '}';
    }
}

这是实现克隆的方法

标签:JAVA,String,基础,System,接口,第四天,println,抽象类,public
From: https://blog.csdn.net/m0_73570063/article/details/140499521

相关文章

  • 0基础学JAVA!!!(第三天)
    0基础学JAVA!!!(第三天)一,方法:(1)方法的定义:  定义一个方法需要有返回值类型 方法的名称(方法的参数){方法体}  返回值类型:当这个方法不需要返回值的时候返回值类型就用void,用void不是返回一个null值,是不返回值!!在用void的时候可以写return,但是不返回值,用作终止方法返回值......
  • java数组之数组工具类——Arrays的使用
    一、Arrays工具类简述    在java的类库中有许多现成的已经封装好的方法,可以供开发人员使用,比如我们之前学的二分法查找或者快速排序等。所以在实际的开发中,我们是不用自己编写这些常用的方法的。那么在常用的数组方法在哪里的?java作为面向对象的语言,所有方法都会封装......
  • 花几千上万学习Java,真没必要!(十四)
    方法:测试代码1:不带参数,不带返回值的方法packagetestmethod.com;publicclassTestClassMethod{//定义一个不带参数且不带返回值的方法publicstaticvoidmyMethod(){//在这里编写方法体System.out.println("Thisismymethod");}......
  • JavaScript实现通过按纽控制电梯上下移动,并实现帧频动画
    varapp=newPIXI.Application(520,460);document.body.appendChild(app.view);//创建背景varbg=newPIXI.Sprite.fromImage("res/lianxi/elevator/bg.png");app.stage.addChild(bg);varelevator=newPIXI.Sprite.fromImage("res/lianxi/elevator/dt......
  • javaScrip的学习(一)
    目录引言一、java和JavaScript的联系二、js中的弹出框1.alert弹出框2.confirm带确认取消的按钮弹框3.prompt带有提示信息且带有输入框的弹框 4.输出到网页中​三、js引入方式1.放在script标签中2.放在外部js文件中四、执行顺序五、书写规范1.语句结尾加分号......
  • [米联客-安路飞龙DR1-FPSOC] FPGA基础篇连载-02使用安路TD开发工具创建FPGA工程
    软件版本:Anlogic-TD5.9.1-DR1_ES1.1操作系统:WIN1064bit硬件平台:适用安路(Anlogic)FPGA实验平台:米联客-MLK-L1-CZ06-DR1M90G开发板板卡获取平台:https://milianke.tmall.com/登录"米联客"FPGA社区http://www.uisrc.com视频课程、答疑解惑!1概述本实验以FPGA芯片DR1M9......
  • Java面试题(企业真题)
    01.泛型的理解泛型是Java5引入的一种特性,它允许程序员在定义类、接口或方法时指定一个或多个类型参数,从而可以在运行时处理各种不同的数据类型,同时保持类型安全。泛型提供了编译时类型检查,消除了强制类型转换的需要,减少了运行时ClassCastException异常的可能性。02.泛型......
  • JAVA小白学习日记Day6
    1.List集合:把具有相同属性的东西放在一起,也可以是容器,把有关的东西都放进去。List:List是位于java.util下的一个接口,有序集合(也称为序列)。此界面的用户可以精确控制每个元素在列表中的插入位置。用户可以通过整数索引(列表中的位置)访问元素,并在列表中搜索元素。之前学过的容器......
  • [Java基础]Class对象
    Class类[class对象通常存放在方法区]在程序运行期间,Java运行时系统始终为所有对象维护一个运行时类型标识。这个信息会跟踪每个对象所属的类。虚拟机利用运行时类型信息选择要执行的正确的方法。不过,可以使用一个特殊的Java类访问这些信息。保存这些信息的类名为Class,这个名字......
  • 第八节 JMeter基础-高级登录【数据库数据驱动】
    声明:本文所记录的仅本次操作学习到的知识点,其中商城IP错误,请自行更改。背景:获取数据库用户表中的数据进行登录接口测试。思路:引用jar包【测试计划】。设置数据库的连接信息,取变量名db1--数据源【配置元件】。数据取样器引用数据源,填写查询sql,定义用户名密码变量名【取样器】......