经过前面的学习,你是不是还有一些疑惑点呢?下面我来总结一下新手入门的疑惑点吧:
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 种基本数据类型所占空间的大小如下:
| 类型 | 类型名称 | 关键字 | 占用内存 |
|---|---|---|---|
| 字节型 | byte | 1字节 | |
| 整 | 短整型 | short | 2字节 |
| 整形 | int | 4字节 | |
| 型 | 长整型 | long | 8字节 |
| 浮 | 单精度浮点型 | float | 4字节 |
| 点 | 双精度浮点型 | double | 8字节 |
| 字符型 | 字符型 | char | 2字节 |
| 布尔型 | 布尔型 | boolean | 1字节 |
注意:
- Java 里使用
long类型的数据一定要在数值后面加上 L,否则将作为整型解析。 - char :单引号
char a = 'h' - 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;
我们可以看到会报错,因为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);
我们运行看一下:
这里我们可以看到数据丢失了-1294967296。使用说比较大范围的数据类型转小的数据类型,数据会不准确。
2.类型不兼容:在进行强制类型转换时,确保源类型和目标类型之间是兼容的。例如,不能将一个String类型直接转换为int类型。
String str = "123";
int num = (int) str; // 报错
我们会看到他报错,提示不可转换的类型,不能将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);
}
continue
continue:用于跳过当前的循环体,执行下一次循环,执行continue语句后,当前循环体中continue语句后面的语句不在执行。
for (int i = 0; i < 10; i++){
if (i == 3){
continue;
}
System.out.println("----" + i);
}
这里我们可以看到如果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);
}
我们可以看到执行到return的时候直接终止了循环。
==最后非常感谢您的阅读,也希望能得到您的反馈 ==