1.安装目录说明
2.java 的分类
JAVA是一门编程语言,分为三大版本,分别是javase、javame、javaee。
-
JavaSE标准版 即Java标准版,主要用于开发和部署桌面、服务器以及嵌入设备和实时环境中的Java应用程序。例如,Java应用程序开发平台Eclipse。
-
JavaEE企业版 是在JavaSE的基础上构建的,用来开发B/S架构软件,即开发企业级应用,主要针对企业应用的开发。例如,电子商务网站、ERP系统(企业资源管理系统)。
- JavaEE在JavaSE的基础进行了扩展,增加了一些更加便捷的应用框架。比如我们现在常用的Java开发三大框架Spring、Struts和Hibernate,我们可以应用这些框架轻松写出企业级的应用软件。
- Java EE也可以说是一个框架也是一种规范,说它是框架是因为它包含了很多我们开发时用到的组件,例如:Servlet,EJB,JSP,JSTL等;说它是规范因为我们开发web应用常会用到的一些规范模式,JavaEE提供了很多规范的接口却不实现,将这些接口的具体实现细节转移到厂商身上,这样各家厂商推出的JavaEE产品虽然名称实现不同,但展现给外部使用的却是统一规范的接口。
- 例如,我们编写的JSP代码中,由于大量的显示代码和业务逻辑混淆在一起,彼此嵌套,不利于程序的维护和扩展。当业务需求发生变化的时候,对于程序员和美工都是一个很重的负担。为了程序的易维护性和可扩展性,这就需要我们使用JavaEE技术来进行项目开发。
-
JavaME微型版 主要针对消费类电子设备的。它是一套运行专门为嵌入式设备设计的api接口规范,主要用于开发移动设备软件和嵌入式设备软件,例如:手机游戏,电视机顶盒和打印机相关的嵌入式设备软件、蜂窝电话和可视电话、数字机顶盒、汽车导航系统等等。
-
总结
- JavaSE是Java的基础,主要针对桌面程序开发;
- JavaEE是针对企业级应用开发;
- JavaME是主要针对嵌入式设备软件开发。
3.跨平台原理
- 跨平台,是指java语言编写的程序,一次编译后,可以在多个系统平台上运行。
实现跨平台:Java程序是通过java虚拟机在系统平台上运行的,只要该系统可以安装相应的java虚拟机,该系统就可以运行java程序。(注意不是能在所有的平台上运行,关键是该平台是否能安装相应的虚拟机)
2.其背后的原理是什么?
Java跨平台原理:
-
由源文件(.java)—>字节码文件(.class)(二进制文件)-----> 解释---->Unix,Win,Linux等机器。
-
而这一系列的步骤就是通过JVM (JAVA虚拟机) 来进行实现的。
-
简单的来说, 就是当你需要执行某个Java程序时,会牵扯到JVM。具体就是我们编写的Java源码,编译后会生成一种.class文件,称为字节码文件。而Java虚拟机就是负责将字节码文件翻译成特定平台下的机器码,然后运行。
注意:跨平台的是Java程序,而不是jvm,不同系统需要安装对应版本的JVM;
4. Java编译过程
Java文件编译过程包括两个阶段,
- 第一阶段是在编译阶段编译成Java字节码的过程,有些书籍中叫前端编译器,如Oracle的javac编译器;
- 第二阶段是在运行时,通过JVM的编译优化组件,对代码中的部分代码编译成本地代码,即JIT编译,如HotSpot中的C1、C2编译器。JVM整个编译过如下图所示。
5. JRE和JDK
JDK(Java Development Kit)和JRE(Java Runtime Environment)是Java开发和运行的核心组件,它们之间存在明显的区别。以下是对两者的详细比较:
- 定义与功能
-
JDK:
- 定义:JDK是Java语言的软件开发工具包(Software Development Kit),它包含了Java的开发工具和运行环境。
- 功能:JDK提供了编写、编译、调试Java程序所需的所有工具和资源。这些工具和资源包括Java编译器(javac)、Java运行时环境(JRE)、Java调试器(jdb)以及大量的Java类库等。JDK使得Java程序员能够开发、测试和部署Java应用程序。
-
JRE:
- 定义:JRE(java Rountime Environment)是Java程序的运行环境,它提供了运行Java程序所需的基础设施。
- 功能:JRE包含了Java虚拟机(JVM)和Java核心类库,这些组件共同为Java程序提供了一个运行时环境。用户无需了解Java程序的编译过程,只需在安装了JRE的计算机上即可运行Java程序。
- 组件与结构
-
JDK:
- 核心组件:JDK不仅包含了JRE(即Java虚拟机、核心类库等),还包含了Java编译器(javac)、Java文档生成工具(javadoc)、Java调试器(jdb)等开发工具。
- 结构:JDK = JRE + 开发工具集。
-
JRE:
-
核心组件:JRE主要由Java虚拟机(JVM)和Java核心类库组成。
-
结构:JRE = JVM + Java核心类库 + 其他支持文件。
- 面向对象与用途
- JDK:
面向对象:JDK主要面向Java开发人员,是开发Java应用程序的必备工具。 用途:用于编写、编译和调试Java代码,以及进行相关的开发任务。
- JRE:
面向对象:JRE主要面向普通用户或Java程序的使用者,他们不需要进行Java程序的开发或调试,只需运行Java程序即可。 用途:用于执行Java应用程序,而不涉及Java代码的编译。
6.基础知识
- hello world
package cn.java.day01;
public class T1 {//外层框架
// main函数是java程序的入口,无论java程序有多么复杂,都是从main函数第一行开始执行的
public static void main(String[] args) {//内层框架
System.out.println("hello java");
}
}
字节码文件只有java虚拟机才能读懂
2、 转义符 转义字符是一些有特殊意义的字符,用来表示常见的不能显示的字符,如表示换行。
所有转义字符和它们所对应的意义如下表所示:
3. 快捷代码
psvm 快速创建内容框架的代码模版
自动代码
Idea快速选中一行的四种方式
一、鼠标连续点三下
二、end键将光标移到行尾 , ctrl+w 选中行
三、end键将光标移到行尾 , shift + home 选中行
四、home 键 光标移到行首、然后 点击shift +end
7.Java数据类型(八种基本数据类型 + 四种引用数据类型)
1、位(bit): 又名 比特位,表示二进制位,是计算中内部数据储存的最小单位。一个二进制位只能表示0和1两种状态。
2、字节(byte): 是计算机中处理数据的基本单位。一个字节等于八位(1Byte = 8bit)
3、字(word): 计算机进行数据处理时,一次存取、加工和传送的数据长度。在常见的计算机编码格式下,一个字等于两个字节(十六位)(1word = 2Byte = 16bit)
- JAVA中的数据类型分为两大类:
1、基本数据类型:整型、浮点型、字符型、布尔型
- 整数类型 —— byte、short、int、long,
- 浮点类型 —— float、double
- 字符类型 —— char
- 布尔类型 —— boolean
package cn.java.day01;
public class T02 {
public static void main(String[] args) {
// java 中常用数据类型
int num = 3;
// 双精度保存浮点数,保存小数
double height = 1.77;
// 性别
char gender = '男';
// 字符串 ""
String name = "张三";
// 常量:其值不可以改变的量,常量·一旦定义后序不可以更改他的值
// 常量名通常大写,通常定义时既对其进行初始化
final double Pi = 3.14;
}
}
1.基本数据类型(八种):
Java的八种基本类型:(按字节来分)
boolean 布尔型 1个字节 8bit(8位)
byte 字节类型 1个字节
char 字符类型 2个字节
short 短整型 2个字节
int 整型 4个字节
float 浮点型(单精度)4个字节
long 长整型 8个字节
double 双精度类型 8个字节
Java中默认的整数类型是int,如果要定义为long ,则要在数值后加上L或者l
默认的浮点型是双精度浮点,如果要定义float,则要在数值后面加上f或者F
一个字节等于8位,1个字节等于256个数。2^8
一个英文字母或者阿拉伯数字占一个字节
一个汉字占2个字节
2、引用数据类型:
- 接口(interface)、数组([ ])、类(class)。
引用数据类型是建立在八大基本数据类型基础之上,
- 包括数组、接口、类。引用数据类型是由用户自定义,用来限制其他数据类型。
- 简单的说,除八大基本类型之外的所有数据类型,都为引用数据类型。
所有引用类型的默认值都为 null 。
二、数据类型转换:
转化从低级到高级:byte,short,char(三者同级)—> int —> long—> float —> double
package cn.java.day01;
public class T03 {
public static void main(String[] args) {
// 类型转换
// 自动类型转换
double num1 = 1.2;
int num2 = 3;
// 小数和整数相加时,先整数隐式的转成小数,最后在相加
double res=num1+num2;
// 强制转换的大前提是类型相容
double num=5.33;
int num3=(int)num;
System.out.println(num3);//5
}
}
- 1、低级转换高级:自动类型转换
- 2、高级转换低级:强制类型转换
注意事项
- 1、强制类型转换过程中可能造成数据丢失;
- 2、强制类型转换时要在需要转换的数据类型前加上 ()。
8. Scanner 扫描仪
首先,我们通过import语句导入java.util.Scanner,import是导入某个类的语句,必须放到Java源代码的开头,后面我们在Java的package中会详细讲解如何使用import。
然后,创建Scanner对象并传入System.in。System.out代表标准输出流,而System.in代表标准输入流。直接使用System.in读取用户输入虽然是可以的,但需要更复杂的代码,而通过Scanner就可以简化后续的代码。
有了Scanner对象后,要读取用户输入的字符串,使用scanner.nextLine(),要读取用户输入的整数,使用scanner.nextInt()。Scanner会自动转换数据类型,因此不必手动转换。
package cn.java.day01;
//引入Scanner包
import java.util.Scanner;
public class T04 {
public static void main(String[] args) {
// 创建一个扫描仪对象
Scanner input = new Scanner(System.in);
// 进行接收操作
int val = input.nextInt();//输入整数
System.out.println("您刚才输入的数字是" + val);
Scanner inpu1 = new Scanner(System.in);
char ch = inpu1.next().charAt(0);//下标为0代表第一个字符 charAt
// 小写字母转成大写字母,小写字母比大写字母多32,所以要减32,存在自动类型转换,需要将char类型的ch转成
// 数字,转好之后,在减32,最后在强制类型转换
char bigch = (char) (ch - 32);
System.out.println(bigch);
}
}
练习案例:求水仙花数
package cn.java.day01;
public class T06 {
public static void main(String[] args) {
// 求水仙花数
for (int i = 100; i < 1000; i++) {
int ge = i % 10;
int shi = i / 10 % 10;
int bai = i / 100;
if (ge * ge * ge + shi * shi * shi + bai * bai * bai == i) {
// 证明是水仙花数
System.out.println(i);//153,370,371,407
}
}
}
}