Java介绍和基本数据类型

126 阅读8分钟

经过前面的学习,你是不是还有一些疑惑点呢?下面我来总结一下新手入门的疑惑点吧:

Java 跨平台你真的了解么?

java为什么能跨平台?

java之所以能跨平台主要是归于JVM虚拟机。java编写的程序,一次编译后可以通过java的虚拟机在系统平台上运行,相对应的系统安装对应的java虚拟机就可以运行java程序了。

JDK和JRE和JVM的区别

  • JDK:jdk是用于java开发的一套工具包,jdk帮助我们编译java的代码,里面包含了编译工具javac和打包工具jar。

  • JDK是开发工具,它让程序员编写Java程序。

  • JRE:jre是java的程序运行时的环境,包含了JVM和运行时所需要的核心类库。

  • JRE是运行环境,它让编写好的Java程序可以被运行。

  • JVM:虚拟机。java程序需要运行在虚拟机上的,不同平台有不同的虚拟机,所以这就是java能实现跨平台的原因。

  • JVM则是JRE的一部分,位于程序执行的最前沿,将字节码转化为机器代码。在虚拟机上运行。

JDK和JRE和JVM的关系

  • JDK:是Java开发工具包;(包含如下:)

    JVM虚拟机:Java程序运行的地方;

    核心类库:Java已经写好的东西,可以直接用;

    发工具:Javac,java,jdb,jhat...

  • JRE:是Java运行的环境;(包含如下:)

    JVM,核心类库,运行工具;

JDK包含了JRE,JRE包含了JVM.

Java面向对象和面向过程

  • 面向过程:具体化,流程化,需要一步一步的分析,一步一步的实现。
  • 面向对象:模型化,这是一个封装的盒子,加入属性和方法可以直接使用。

我们来举个洗衣服的例子:

面向过程:洗衣服->加洗衣服->加水->漂洗->清洗->甩干

面向对象:new出两个对象“人”和“洗衣机”。

“人”:加入属性和方法:洗衣服、加洗衣粉、加水。

“洗衣机”:加入属性和方法:漂洗、清洗、甩干。

下面我们来说一下优缺点:

  • 面向对象:

    优点:容易维护、复用、扩展、由于面向对象有封装性、继承、多态性的特征,使系统更加灵活更加易于维护。

    缺点:效率比面向过程低。

  • 面向过程:

    优点:效率高,因为不需要实例化对象。

    缺点:没有面向对象容易维护,复用,扩展等...

Java的三大平台

到目前为止,Java主要分为3个平台,下面我们来了解一下吧:

  • Java SE:标准版,是Java技术核心和基础,同时也是Java ME和Java EE的基础。

  • java EE:企业版:是为开发企业级应用程序提供的解决方案。

  • Java ME:小型版:是为开发电子消费从和嵌入式设备提供的解决方案。

Java 的基本特征

  • 面向对象
  • 安全性
  • 多线程
  • 简单易用
  • 开源
  • 跨平台

Java 中的基本数据类型了解么?

基本的8种数据类型!

  • 数值型

    整数型:byte,short,int,long

  • 浮点型

    单精度浮点型:float

    双精度浮点型double

  • 字符型:char

  • 布尔型:double

这 8 种基本数据类型所占空间的大小如下:

类型类型名称关键字占用内存
字节型byte1字节
短整型short2字节
整形int4字节
长整型long8字节
单精度浮点型float4字节
双精度浮点型double8字节
字符型字符型char2字节
布尔型布尔型boolean1字节

注意:

  1. Java 里使用 long 类型的数据一定要在数值后面加上 L,否则将作为整型解析。
  2. char :单引号char a = 'h'
  3. String:双引号String a = "hello"

数据类型分为几类:

基本数据类型分为整数型、浮点型、字符型、布尔型。

变量分几大类:

  • 局部变量
  • 成员变量:(int,double,char,boolean)
  • 静态变量:(static)

变量与方法:

  • 变量:在程序执行过程中,在某个范围内的值可以发生改变的量。
  • 成员变量:方法外部,类内部定义的变量。
  • 局部变量:类方法中的变量。
public class demo1 {
    // 成员变量
    private int number1 = 10;
    publ应用 static void main(String[] args) {
        // 局部变量
        int number2 = 10;
        System.out.println(number1);    // 访问成员变量
        System.out.println(number2);    // 访问局部变量
    }
}

成员变量和局部变量的作用域:

  • 成员变量:针对整个类有效。
  • 局部变量:只在某个范围内有效。

成员变量和局部变量的优缺点:

  • 成员变量:

    优点:可以在类的多个方法中共享数据,提高灵活性和复用性。

    缺点:占用空间比较大,特别是对于大量的成员变量。

  • 局部变量:

    优点:节省内存空间,避免长时间占用内存。

    缺点:生命周期短,无法长时间保存数据。只能在所属的作用域使用,不能跨方法访问。

成员变量和局部变量的生命周期:

  • 成员变量:随着对象创建而存在,对象消失也会消失。
  • 局部变量:当方法调用完,或者语句结束后就会自动释放。

基本数据类型和引用数据类型区别:

  • 存储不同

    基本数据类型:是存储数据的简单类型。

    引用数据类型:是存储对象的引用或地址。

  • 分配空间不同

    基本数据类型:在内存中分配固定的空间。

    引用数据类型:在内存中分配一个地址,实际数据存储在另外的位置。

  • 存储位置不同

    基本数据类型:是直接存储在栈 (stack)中的。

    引用数据类型:在栈中存储的是一个地址。

转换数据类型

在Java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能。下面就对常用的转换方法进行一个总结。

隐式转换

自动类型转换是指小的数据类型可以自动转换为大的数据类型。示例如下:

int i = 100;
long l = i; // int 自动转换为 long
float f = l; // long 自动转换为 float

强制转换

强制类型转换是指将大的的数据类型强制转换为小的数据类型。示例如下:

强制转换格式:数据类型 变量名 = (数据类型)被转数据值;

long a = 10;
int b = a;

image.png 我们可以看到会报错,因为long是8个字节,而int是4个字节的。要想赋值成功只有通过强制转换将long类型的转换成int类型才能被赋值。

long a = 10;
int b = (int) a;  // long类型被强制转换成int型

浮点型转换整数:

需要注意的是,强制类型转换可能会导致数据丢失和类型不兼容。

1.数据丢失:比较大范围的数据类型转为小的数据类型。例如下面:

long number1 = 3000000000L;
int number2 = (int) number1;
System.out.println("number1的值=" + number1);
System.out.println("转换为number2的值=" + number2);

我们运行看一下:

image.png 这里我们可以看到数据丢失了-1294967296。使用说比较大范围的数据类型转小的数据类型,数据会不准确。

2.类型不兼容:在进行强制类型转换时,确保源类型和目标类型之间是兼容的。例如,不能将一个String类型直接转换为int类型。

String str = "123";
int num = (int) str; // 报错

image.png 我们会看到他报错,提示不可转换的类型,不能将String转换为int型。那我们一定要转怎么办呢,我们来看一下正确格式:

// 字符串转换为整形
String str = "123";
int num = Integer.parseInt(str); // 正确格式
System.out.println(num); // 123

这里我们来说个小结论,如果大类型转小类型是不允许的,因为会数据不准确。字符串强制转换为整型可以用到Integer.parseInt()方法。

  • Integer.parseInt()方法:Java中的一个静态方法,用于将字符串转换成整数的方法。

break、continue、return这三者的区别

break

break:用于终止循环语句,并跳出循环体。不管是哪种循环,一旦在循环体中遇到break,系统将完全结束循环,开始执行循环之后的代码。

for (int i = 0; i < 10; i++){
    if (i == 3){
        break;
    }
    System.out.println("----" + i);
}

image.png

continue

continue:用于跳过当前的循环体,执行下一次循环,执行continue语句后,当前循环体中continue语句后面的语句不在执行。

for (int i = 0; i < 10; i++){
    if (i == 3){
        continue;
    }
    System.out.println("----" + i);
}

image.png 这里我们可以看到如果i等于3的时候就跳过了本次循环,跳到下次循环继续执行打印。

return

return:用于退出函数,并返回函数值。功能是结束一个方法。 一旦在循环体内执行到一个return语句,return语句将会结束该方法,循环自然也随之结束。与continue和break不同的是,return直接结束整个方法,不管这个return处于多少层循环之内。

for (int i = 0; i < 10; i++){
    if (i == 3){
        return;
    }
    System.out.println("----" + i);
}

image.png 我们可以看到执行到return的时候直接终止了循环。

==最后非常感谢您的阅读,也希望能得到您的反馈  ==