Java基本框架你真的理解了吗?

306 阅读9分钟

背景

学习Java我们不仅要学会如何去打代码、程序。还要懂得他们每一个字符、字符串和类等等的含义与用途。虽然这些内容基础,但是我们一旦对这些内容的认识和理解加深,不仅会对 Java 进一步学习起到基石般的支撑作用,帮助我们更顺畅地理解各种代码示例和框架的实现原理。

—————————————————————————————————————————

目录

  • 基本数据类型和引用数据类型的区分
  • String的定义与作用
  • jre、jvm分别是什么?java为什么可以实现跨平台运行? —————————————————————————————————————————

一、基本数据类型和引用数据类型的区分

1.什么是基本数据类型与引用数据类型

(1)基本数据类型:

定义:基本数据类型是编程语言中最基础的数据类型,它们通常用来表示简单的数据值。

分类:一共八个基本数据类型,分别为byte、short、int、long(整数类型),float、double(浮点类型),char(表示字符),boolean(表示真假)。

数据类型字节数取值范围(示例,不同环境下具体范围有标准定义)默认值示例代码声明方式
byte1 字节(8 位)-128到 1270byte num = 10;
short2 字节(16 位)-32768到 327670short num = 100;
int4 字节(32 位)-2147483648到 21474836470int num = 1000;
long8 字节(64 位)-9223372036854775808到 92233720368547758070L(注意要加 L 后缀表示长整型)long num = 10000000000L;
float4 字节(32 位)大约 ±3.40282347× 到 ±1.40129846×(有精度限制)0.0f(注意要加 f 后缀表示单精度浮点数)float num = 3.14f;
double8 字节(64 位)大约 ±1.7976931348623157× 到 ±2.2250738585072014×(有精度限制)0.0d(一般 d 可省略)double num = 3.1415926;
char2 字节(16 位)'\u0000'(即 0)到 '\uffff'(即 65535),表示 Unicode 字符'\u0000'(空字符)char ch = 'A';
boolean理论上 1 位,但实际按字节对齐,通常占 1 字节truefalsefalseboolean flag = true;

(2)引用数据类型

  1. 类(Class)

    • 定义:类是面向对象编程中最基本的引用数据类型。它用于定义对象的模板,包含属性(成员变量)和方法(成员函数)。String类用于处理字符串,ArrayList是动态数组,HashMap用于存储键值对。例如,在 Java 中可以定义一个Person类:
   class Person {
       private String name;
       private int age;
       public Person(String name, int age) {
           this.name = name;
           this.age = age;
       }
       public String getName() {
           return name;
       }
       public void setName(String name) {
           this.name = name;
       }
       public int getAge() {
           return age;
       }
       public void setAge(int age) {
           this.age = age;
       }
   }
  • 用途:通过类可以创建多个对象,每个对象都有自己的属性值和行为(通过方法实现)。类之间还可以通过继承、实现接口等方式建立关系,以实现代码的复用和复杂的业务逻辑。例如,Student类可以继承Person类,增加学生特有的属性(如学号)和方法(如学习)。

  1. 接口(Interface)

    • 定义:接口是一种抽象类型,它定义了一组方法签名(方法名、参数列表和返回类型),但没有方法体。在 Java 中,接口使用interface关键字定义。例如:
   interface Shape {
       double getArea();
       double getPerimeter();
   }
  • 用途:接口主要用于定义规范和契约,实现接口的类必须实现接口中定义的所有方法。它使得代码具有更高的可插拔性和可维护性。例如,Circle类和Rectangle类都可以实现Shape接口,分别实现计算面积和周长的方法,这样在处理不同形状的图形时,可以统一通过Shape接口来调用方法,而不需要关心具体是哪种形状。

  1. 数组(Array)

    • 定义:数组是一种用于存储多个相同类型元素的数据结构,它是引用数据类型。在 Java 中,数组的声明和初始化有多种方式。例如,声明一个整型数组:int[] numbers = new int[5];或者int[] numbers = {1, 2, 3, 4, 5};
    • 用途:数组用于存储和处理批量数据,方便对一组相关的数据进行操作,如排序、查找等。例如,可以使用数组来存储学生的成绩,然后通过循环遍历数组来计算平均分、最高分等。
  2. 枚举(Enum)

    • 定义:枚举是一种特殊的数据类型,它允许定义一组命名的常量。在 Java 中,枚举使用enum关键字定义。例如:
   enum Season {
       SPRING, SUMMER, AUTUMN, WINTER
   }
  • 用途:枚举主要用于表示一组固定的值,使得代码更加清晰和可读。例如,在表示一周的星期几、颜色的种类等情况下使用枚举,可以避免使用魔法数字(没有明确含义的数字常量),并且编译器会对枚举类型进行类型检查,提高代码的安全性。

  1. 注解(Annotation)

    • 定义:注解是一种为程序元素(类、方法、变量等)添加元数据(关于数据的数据)的方式。在 Java 中,注解以@符号开头,通过@interface关键字定义。例如:
   import java.lang.annotation.ElementType;
   import java.lang.annotation.Retention;
   import java.lang.annotation.RetentionPolicy;
   import java.lang.annotation.Target;
   @Retention(RetentionPolicy.RUNTIME)
   @Target(ElementType.TYPE)
   @interface MyAnnotation {
       String value();
   }
  • 用途:注解主要用于提供额外的信息给编译器或其他工具,用于代码的配置、检查等目的。例如,在框架开发中,注解可以用于自动配置、依赖注入等功能。在 Java 的企业级开发中,像 Spring 框架就大量使用注解来简化配置和开发流程。

2.区分基本数据类型和引用数据类型

(1.)存储方式不同:

基本数据类型:基本数据类型的值直接存储在栈内存中;

栈(Stack): 在 Java 中,栈是一种数据结构,用于存储数据。它遵循后进先出的原则,就像一个只允许在一端进行插入和删除操作的容器。比喻:有一叠盘子,最后放上去的盘子会最先被拿走,这就类似于栈的操作方式。

引用数据类型:引用数据类型存储的是对象的引用,而对象本身存储在堆内存中。

堆内存(Heap Memory):是计算机内存中的一块区域,主要用于动态分配对象的存储空间,是存储对象和动态分配的数据结构。

二、String的定义与作用

  1. 定义:在java中,String是一个类,是java中已经给我们定义好的类,用于表示字符序列,也就是我们通常所说的字符串。它是一种引用数据类型。

  2. 创建方式:

(1.)直接赋值:可以使用双引号将字符序列括起来直接赋值给String变量,这是最常见的方式。例如:String message = "Welcome to Java";。在这种情况下,Java 会在字符串常量池中查找是否已经存在相同内容的字符串,如果存在,则直接复用该字符串对象;如果不存在,则在常量池中创建一个新的字符串对象。

(2.)使用new关键字构造:通过new关键字调用String的构造函数来创建对象。例如:String anotherMessage = new String("Another String");。这种方式会在堆内存中创建一个新的String对象,即使字符串内容与常量池中已有的字符串相同。不过,在实际开发中,除非有特殊需求,直接赋值的方式更加简洁高效。

  1. 字符串常量池

    字符串常量池是 Java 内存中的一个特殊区域,用于存储字符串常量。它的存在是为了提高性能和节省内存。当使用直接赋值方式创建字符串时,Java 会先在常量池中查找是否有相同内容的字符串,如果有,就直接返回该字符串的引用,避免了重复创建相同内容的字符串对象。例如:

String str1 = "Java";
String str2 = "Java"; 
System.out.println(str1 == str2);
  1. 在实际开发中的应用场景

    • 文本处理:用于存储和处理各种文本信息,如用户输入、文件内容、日志信息等。例如,在一个用户注册系统中,存储用户输入的姓名、密码等信息都可以使用String类型。
    • 网络通信:在网络编程中,发送和接收的消息通常也是以字符串形式存在。例如,HTTP 协议中的请求头和响应体中的文本内容可以用String来处理。
    • 数据库操作:在与数据库交互时,SQL 语句通常是字符串形式。例如,String sql = "SELECT * FROM users WHERE age > 18";,用于查询年龄大于 18 岁的用户信息。

三、java的jre、jvm和特性

1.jre是Java 运行环境(Java Runtime Environment,JRE),是运行 Java 程序的最小环境。它主要由 Java 虚拟机(JVM)、Java 核心类库(Java Class Library)和支持文件组成。JRE 就像是一个 Java 程序的 “运行工具包”,提供了运行 Java 程序所必需的一切组件。

2.jvm是Java 程序和底层操作系统及硬件之间的一个中间层抽象。它就像是一个虚拟的计算机,为 Java 程序提供了一个统一的运行环境。先把java程序编译成字节码,而字节码是一种无关平台的表现形式,字节码的文件扩展名.class(例如,一个简单的HelloWorld程序经过编译后会生成HelloWorld.class文件。),jvm能够理解并运行这些字节码,再通过字节码解释器把字节码解释为机器码来运行,并且不会因为系统和和硬件的不同来重新编译。

3.特性:java可以实现跨平台,即java程序可以在windows、Linux、Mac上都可以正常运行。因为java有java虚拟机(jvm)这个重要因素的存在,所以可以跨平台运行。

总结:

1.数据类型

(1)八个基本数据类型:byte、short、int、long、float、double、char、boolean

(2)和引用数据类型:类、数组、枚举、注解、接口。

2.String是引用数据类型,也是一个类,即字符串。

3.jre是java的运行环境提供了java运行所需的一切组件;jvm是java虚拟机,能够让java实现跨平台运行。

#java之旅#