背景
学习Java我们不仅要学会如何去打代码、程序。还要懂得他们每一个字符、字符串和类等等的含义与用途。虽然这些内容基础,但是我们一旦对这些内容的认识和理解加深,不仅会对 Java 进一步学习起到基石般的支撑作用,帮助我们更顺畅地理解各种代码示例和框架的实现原理。
—————————————————————————————————————————
目录一、基本数据类型和引用数据类型的区分1.什么是基本数据类型与引用数据类型(1)基本数据类型:
定义:基本数据类型是编程语言中最基础的数据类型,它们通常用来表示简单的数据值。
分类:一共八个基本数据类型,分别为byte、short、int、long(整数类型),float、double(浮点类型),char(表示字符),boolean(表示真假)。
数据类型字节数取值范围(示例,不同环境下具体范围有标准定义)默认值示例代码声明方式
byte
1 字节(8 位)
-128到 127
byte num = 10;
short
2 字节(16 位)
-32768到 32767
short num = 100;
int
4 字节(32 位)
-2147483648到 2147483647
int num = 1000;
long
8 字节(64 位)
-9223372036854775808到 9223372036854775807
0L(注意要加 L 后缀表示长整型)
long num = 10000000000L;
float
4 字节(32 位)
大约 ±3.40282347×到 ±1.40129846×(有精度限制)
0.0f(注意要加 f 后缀表示单精度浮点数)
float num = 3.14f;
double
8 字节(64 位)
大约 ±1.7976931348623157×到 ±2.2250738585072014×(有精度限制)
0.0d(一般 d 可省略)
double num = 3.1415926;
char
2 字节(16 位)
‘u0000’(即 0)到 ‘uffff’(即 65535),表示 Unicode 字符
‘u0000’(空字符)
char ch = ‘A’;
boolean
理论上 1 位,但实际按字节对齐,通常占 1 字节
true或false
false
boolean flag = true;
(2)引用数据类型
类(Class)
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;
}
}
接口(Interface)
interface Shape {
double getArea();
double getPerimeter();
}
数组(Array)
枚举(Enum)
enum Season {
SPRING, SUMMER, AUTUMN, WINTER
}
注解(Annotation)
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();
}
2.区分基本数据类型和引用数据类型
(1.)存储方式不同:
基本数据类型:基本数据类型的值直接存储在栈内存中;
栈(Stack): 在 Java 中,栈是一种数据结构,用于存储数据。它遵循后进先出的原则,就像一个只允许在一端进行插入和删除操作的容器。比喻:有一叠盘子,最后放上去的盘子会最先被拿走,这就类似于栈的操作方式。
引用数据类型:引用数据类型存储的是对象的引用,而对象本身存储在堆内存中。
堆内存(Heap Memory):是计算机内存中的一块区域,主要用于动态分配对象的存储空间,是存储对象和动态分配的数据结构。
二、String的定义与作用
定义:在java中,String是一个类,是java中已经给我们定义好的类,用于表示字符序列,也就是我们通常所说的字符串。它是一种引用数据类型。
创建方式:
(1.)直接赋值:可以使用双引号将字符序列括起来直接赋值给String变量,这是最常见的方式。例如:String message = “Welcome to Java”;。在这种情况下,Java 会在字符串常量池中查找是否已经存在相同内容的字符串,如果存在,则直接复用该字符串对象;如果不存在,则在常量池中创建一个新的字符串对象。
(2.)使用new关键字构造:通过new关键字调用String的构造函数来创建对象。例如:String anotherMessage = new String(“Another String”);。这种方式会在堆内存中创建一个新的String对象,即使字符串内容与常量池中已有的字符串相同。不过,在实际开发中,除非有特殊需求,直接赋值的方式更加简洁高效。
字符串常量池
字符串常量池是 Java 内存中的一个特殊区域,用于存储字符串常量。它的存在是为了提高性能和节省内存。当使用直接赋值方式创建字符串时,Java 会先在常量池中查找是否有相同内容的字符串,如果有,就直接返回该字符串的引用,避免了重复创建相同内容的字符串对象。例如:
String str1 = "Java";
String str2 = "Java";
System.out.println(str1 == str2);
在实际开发中的应用场景
三、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之旅#