首页 > 编程语言 >Java基础

Java基础

时间:2023-11-21 16:04:29浏览次数:39  
标签:Java void 基础 public class Animal Earth eat

Java枚举Enum

Java 枚举是一个特殊的类,一般表示一组常量 Java 枚举类使用enum 关键字来定义,各个常量使用逗号,来分割。 示例

enum Animal {
    CAT , DOG , BIRD;
}
public class EnumTest {
    public void demo() {
        Animal animal = Animal.DOG;
        System.out.println(animal);
    }
}

输出结果为:

DOG


Java重写override

重写override是子类对父类中的方法进行重新编写,以满足子类自身行为的需要,即外壳不变,核心重写 示例

class Animal {
    public void move() {
        System.out.println("Animal can move!");
    }
}

class Cat extends Animal {
    public void move() {
        System.out.println("Cats can run and jump!");
    }
}

public class overrideTest {
    public void demo() {
        Animal animal = new Animal();
        Cat cat = new Cat();
        animal.move();  //calling the Animal method
        cat.move();     //calling the Cat method
    }
}

输出结果:

Animal can move! Cats can run and jump!

当需要在子类中调用父类的被重写方法时,要使用 super关键字 示例

class Animal {
    public void eat() {
        System.out.println("Animal can eat!");
    }
}

class Cat extends Animal {
    public void eat() {
        super.eat();
    }
}

public class overrideTest {
    public void demo() {
        Animal cats = new Cat();
        cats.eat();
    }
}

输出结果:

Animal can eat!

final关键字

  • 用final定义的类不能再被继承
  • 用fianl定义的方法不能再被重写
  • 用final定义的变量是常量且不能再被修改

Java字符串String

  • C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串
  • 字符串本质上就是以\0作为结尾的特殊字符数组,因此当把一个字符串存入一个数组时,也把结束符 \0存入数组,并以此作为该字符串是否结束的标志
  • java中的字符串String没有像C语言的结尾符\0 示例
//C语言
char data[3] = {'a', 'b', 'c'};
char data[] = {'a', 'b', 'c', '\0'};
char data[] = "abc";

//Java
String s1 = "Hello World!";                 
String s2 = new String("Hello World!");

使用+连接字符串

String s3 = "Hello" + "World";

Java数组

//Java
int[] arr ={1,2,3};
//C语言
int arr[] = {1,2,3};

Java static单例模式

private static定义变量和方法只能由类名来使用

  • 静态的只能访问静态,非静态的可以访问静态和非静态
  • 静态当中是不可以使用this和super
  • 类中不存在静态的构造

什么是单例模式? 为了保证资源不被过多得浪费,提出一种能让整个系统中一个类只能被实例化对象一次,且实例化对象在内存中唯一存在的路,实现这种思路的功能称作单例模式

单例模式的存在是为了保证一个类仅有一个实例,无法克隆,并提供一个访问它的全局访问点 示例

package com.Lowell;
import org.junit.Test;

class Earth {
    //new 一个新的地球,只有Earth类内可以调用
    private static Earth earthInstance = new Earth();

    //外部无法new新的Earth
    private Earth(){

    }
    //Earth在外部得到Earth
    public static Earth getEarthInstance(){
        return earthInstance;
    }

    public void showMessage(){
        System.out.println("Hello Earth!");
    }
}

public class staticTest {
        @Test
        public void demo() {
            //不合法的构造函数
            //编译时错误:构造函数 Earth() 是不可见的
            //Earth object = new Earth();

            //获取唯一可用的对象
            Earth object = Earth.getEarthInstance();

            //显示消息
            object.showMessage();
        }
}

输出结果:

Hello Earth!


Java接口Interface

在抽象类中有抽象方法,如果把抽象类里的方法全部变成抽象方法,可以用接口interface来替代这个抽象类

接口里面所有方法都是抽象的,实现接口的类,会把接口中定义的方法全部重写 示例

package com.Lowell;

public interface Human {
    public void eat();
}
package com.Lowell;

import org.junit.Test;

class Chinese implements Human {
    @Override
    public void eat() {
        System.out.println("Chinese eat rice!");
    }
}

class Westerner implements Human {
    @Override
    public void eat() {
        System.out.println("Weaterner eat Hamburg!");
    }
}

public class InterfaceTest {
    @Test
    public void demo() {
        Chinese chinese = new Chinese();
        Westerner westerner = new Westerner();
        chinese.eat();
        westerner.eat();
    }

}

输出结果:

Chinese eat rice! Weaterner eat Hamburg!

接口和抽象类本质上有什么区别?

  • 抽象类abstruct class是针对具体的事物进行抽象
  • 接口interfece是针对动作、行为进行抽象,且接口中避免出现名词

标签:Java,void,基础,public,class,Animal,Earth,eat
From: https://blog.51cto.com/u_16300972/8504432

相关文章

  • JAVA Tips (记录一些常用,容易混乱的小知识)
    记录一些常用,容易混乱的小知识1、Json(JsonNode)判断对应的JsonNode中的数据......
  • 06-基础SQL-DML(数据操作语言)
    DML介绍DML英文全称是DataManipulationLanguage(数据操作语言),用来对数据库中表的数据记录进行增删改操作DML-添加数据给指定字段添加一条数据INSERTINTO表名(字段名1,字段名2,...)VALUES(值1,值2,...);给全部字段添加一条数据INSERTINTO表名VALUES(值1,......
  • Java单列集合Set:HashSet与LinkedHashSet详解,为什么它比List接口更严格?
    上篇我们介绍了单列集合中常用的list接口,本篇我们来聊聊单列集合中的另外一个重要接口Set集合。1、Set介绍java.util.Set接口和java.util.List接口一样,同样实现了Collection接口,它与Collection接口中的方法基本一致,并没有对Collection接口进行功能上的扩充,只是比Collection接口......
  • AcWing 算法基础课week 1 总结(万字长文)
    AcWing算法基础课week1总结总结点1:快速排序(分治思想)题1:从小到大排序主体思路:定义一个数x属于数组s,利用双指针,将数组分为大于等于x和小于等于x的两部分,然后递归处理。(具体步骤如下)1.如上图所示,我们定义一个数组s用来储存n个数据,然后定义两个指针ij,分别指向数组的左右两......
  • 数据结构之二叉树的遍历3(java)
    一:概述绝大多数的可以用递归解决问题,也可以使用另一种数据结构来解决,这种数据结构就是栈。因为递归和栈都有回溯的特性。二:具体说明如何借助栈来实现二叉树的遍历,下面以二叉树的前序遍历为例,来阐述具体过程。<1>首先遍历二叉树的根节点1,放入栈中。<2>遍历根节点1的左孩子节点2,放入......
  • react中绘制饼图基础例子
    使用interval标记和theta坐标系来绘制饼图 radius:标签相对于饼图圆心的距离.label()中的text指定了一个回调函数,可以设置标签,其中d是当前项数据,i是当前项的索引,data是全部的数据,注意回调函数要有返回值。实现效果: import{Chart}from'@antv/g2'importReactfrom'......
  • Linux部署Java环境
    本文使用的Linux发行版本为AlmaLinux9.264位(CentOS停止更新后的完美替代发行版本)。本文安装的JDK版本为21.0.1,其他版本方法类似。下载并安装Java开发工具包(JavaDevelopmentKit)更新系统。dnf-yupdate获取安装包链接。前往JDK下载官网。找到对应Linux版本的压缩......
  • java finally一定会执行吗?
    1.答案是不一定,而且很容易弄出不执行的情况;最简单的:在IDEA上执行:try{log("aaa");Thread.sleep(10000);log("bbbb");}catch(Exceptione){log("ddd");}finally{log("eee");}在打印了aaa后点击红色方框停止按钮,会发现应用就停止了,然后没有继续打......
  • Java开发常见问题分析
    程序Bug的产生,通常分为三种类型逻辑漏洞:低级错误,程序执行后无法达到想要效果。越界访问:访问了非法区域,造成程序崩溃。条件考虑不全面:你以为你万无一失,但你永远都不知道输入参数究竟是什么!如何防范未知Bug:异常捕获异常捕获一般依靠try,catch语句。很好理解:try(尝试)一......
  • Java -day4
    4.7稀疏数组publicstaticvoidmain(String[]args){int[][]array1=newint[11][11];array1[1][2]=1;array1[2][3]=2;System.out.println("原始数组");for(int[]ints:array1){for(intanInt......