目录
jdk,jre,jvm概念
jdk : 是JAVA语言的软件开发工具包;是整个JAVA的核心;包含了JAVA的运行环境jre (JVM+JAVA系统类库) 和 JAVA工具。
jre : java runtime environment (java运行时环境) , 所有的java程序都要在jre下才能运行 , 包括JVM和JAVA核心类库和支持文 件。与JDK相比,它不包含开发工具、编译器、调试器和其它工具。
JVM :Java Virtual Mechinal(JAVA虚拟机)。JVM是JRE的一部分,它是一个虚构出来的计算机,JVM有自己完善的硬件架构,比如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM的主要工作是解释自己的指令集(即字节码)并映射到本地的CPU的指令集或 OS 的系统调用,同时Java语言是跨平台运行(由于不同的平台都有不同的虚拟机JVM)。
JDK目录介绍 (了解)
- jdk:jdk根目录,包含版权、许可及README文件以及Java核心平台API的源文件归档(src.zip)
- bin:存放可执行文件目录,里面包含有javac.exe(Java编译器)、java.exe(Java运行工具)等。
- db:该目录是个小型数据库目录,JDK6开始引入
- jre:Java运行时环境的根目录,除了文档外,它与可部署的JRE完全相同
- lib:开发工具使用的类库目录,主要包括tools.jar和dt.jar。
- include:c的头文件,用与支持nativecode库使用jvm Debugger接口。
- src.zip:JDK核心类源码
类是JAVA最基本的单位
格式: public class 类名{}
示例如下:
public class Demo {
}
第一段:使用双引号是因为路径有空格,会根据路径找到javac.exe执行文件 第二段:源文件
|
public class Demo {
public static void main(String[] args) {
System.out.println("你好 Java");
}
}
配置环境变量
配置步骤:
鼠标右键点击计算机 → 属性 → 高级系统设置 → 点击环境变量 → 找到系统变量中的PATH → 点击 编辑 按钮
如图所示
jdk下载地址:http://www.oracle.com/technetwork/java/index.html
jdk版本自己选择下载
新建JAVA_HOME:
名为:JAVA_HOME
值为:C:\Program Files\Java\JDK\jdk1.8.0_72
编辑PATH:
(两个变量之间用英文分号隔开):%JAVA_HOME%\bin;
注释的介绍
单行注释:用于方法里面(main方法)
// 注释一行
多行注释:用于方法里面(main方法)
/* 被注释的内容 */
文档注释:用于class和main方法之前
/** 被注释的内容 */
标识符
标识符就是名称的意思,所有的名称都统称为标识符。Java中经常要定义类、方法、变量(后面会学习到),在 定义他们时总要给它们起名字,这些名字就是标识符。
标识符组成:
1.由数字,字母和下划线(_),美元符号($)或人民币符号(¥)组成。
2.区分大小写的,而且还要求首位不能是数字,Java关键字不能当作Java标识符。
标识符详解(百度百科):https://baike.baidu.com/item/java%E5%85%B3%E9%94%AE%E5%AD%97/5808816
案例演示 :
int day1 = 0; 此句代码是定义了一个int类型的变量(后面会讲到变量的定义)
class Demo {
public static void main(String[] args) {
int 1day = 0;//错误,不能数字开头
int day1 = 0; //正确
int public = 0;//错误
int Public = 0; //正确(区分大小写),但是不建议使用此类型的名字
}
}
关键字:有特别意义的标识符,有时又叫保留字。
数据类型
常量
在程序中存在大量的数据来代表程序的状态,其中有些数据在程序运行过程中值不能发生改变,这些数据在程序
中被叫做常量。
class Demo2 {
public static void main(String[] args) {
System.out.println(100); // 输出整数常量
System.out.println(6.5F); // 输出浮点常量
}
}
变量
在程序运行过程中,会产生一些临时数据,应用程序会将这些临时数据存储到内存单元中,每个内存单元都用一 个标示符来表示,此时内存单元被称为变量,标识符被称为变量名,变量是一种存储数据的载体,变量的数值可以被读取和修改。
Java 是强类型的编程语言,它对变量的数据类型有严格的限定,在定义变量时必须声明变量的类型(八种)
变量及变量的格式:数据类型 标识符 = 数值或表达式;
演示 :
class Demo3 {
public static void main(String[] args) {
int a, b, c; // 声明三个int型整数:a、 b、c
int d = 3, e = 4, f = 5; // 声明三个整数并赋予初值
byte g = 22; // 声明并初始化 g
double pi = 3.14159; // 声明了双精度浮点型变量 pi
char x = 'x'; // 声明变量 x 的值是字符 'x'。
String s = "张三"; // 声明并初始化字符串 s
byte age = 88;
System.out.println(age);
short money1 = 10000;
System.out.println(money);
int money2 = 10000000;
System.out.println(money2);
// 在使用long类型时,末尾需要加字母L,建议大写
long money3 = 100000000000000L;
System.out.println(money3);
float money4 = 6.5F;
System.out.println(money4);
double money5 = 1999999.001;
System.out.println(money5);
}
}
注意:
- 变量使用是必须赋初始值,不赋值不能使用
- 变量名不能重复
class Demo5 {
public static void main(String[] args) {
int a ;//错误,变量要赋值才能使用
System.out.println(a);
boolean x = true;
System.out.println(x);
// 一行可以定义多个变量,但不建议
// int c1 = 5; int c2 = 10;
int c1 = 5;
int c2 = 10;
}
}
变量类型转换
把一种数据类型的值赋给另一种数据类型的变量时,就需要进行数据类型转换。
数据类型转换分两种 :
1.自动类型转换
2.强制类型转换
数据类型按照数据范围从小到大依次为: byte > short > int > long > float > double
自动类型转换 (小--->大)
范围小的数据类型转换成范围大的数据类型,这种方式称为自动类型转换 (也叫隐式数据类型转换)
语法格式:范围大的数据类型 变量 = 范围小的数据类型值;
public class Type3 {
public static void main(String[] args) {
//小 到 大
byte a = 3;
int b = a;
System.out.println(b);
}
}
强制类型转换 (大--->小)
范围大的数据类型转换成范围小的数据类型,这种方式称为强制类型转换 (也叫显式数据类型转换)
语法格式:范围小的数据类型 变量 = (范围小的数据类型) 范围大的数据类型值;
public class Type3 {
public static void main(String[] args) {
//大 到 小
long c = 100;
int d = (int)c;
System.out.println(d);
}
}
强制类型转换会导致精度丢失
b变量值超过了byte最大可表示范围(8位(1个字节))
int类型内存中占用4个字节
byte a;
int b = 298;
a = (byte)b;
System.out.println("b=" + b);
System.out.println("a = " + a);
运算符
是用来计算数据的符号。数据可以是常量,也可以是变量。被运算符操作的数我们称为操作数。
public class Demo7 {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 25;
int d = 25;
System.out.println("a + b = " + (a + b) );
System.out.println("a ‐ b = " + (a ‐ b) );
System.out.println("a * b = " + (a * b) );
System.out.println("b / a = " + (b / a) );
System.out.println("b % a = " + (b % a) );
System.out.println("c % a = " + (c % a) );
}
}
运算符++、的使用(自增自减运算符)
++运算符,会在原有值的基础上自增1;
运算符,会在原有值的基础上自减1。
后缀自增自减法
(a++,a): 先进行表达式运算,再进行自增或者自减运算(先和别人算,再算自己)
情况一:单独使用,不参与运算
int a = 3;
int b = 3;
a++;
b‐‐;
System.out.println(a);
System.out.println(b);
// 结果a值为4,b值为2;
情况二:不单独使用,参与运算
int a = 3;
int b;
b = a++ + 10;
System.out.println(a);
System.out.println(b);
// 结果a值为4,b值为13
前缀自增自减法
(++a,a): 先进行自增或者自减运算,再进行表达式运算(先算自己,再和别人算)
情况一:单独使用,不参与运算,结果和a、b是一样的
int a = 3;
int b = 3;
++a;
‐‐b;
System.out.println(a);
System.out.println(b);
// 结果a值为4,b值为2;
情况二:不单独使用,参与运算
int a = 3;
int b;
b = ++a + 10;
System.out.println(a);
System.out.println(b);
// 结果a值为4,b值为14
赋值运算符
赋值运算符就是为变量赋值的符号 ,赋值运算符左边必须是变量
+=、 ‐=、 *=、 /=、 %=
比较运算符
又叫关系运算符,它是用来判断两个操作数的大小关系以及是否相等关系的,结果是布尔值 (true、false)
public class Demo {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println("a == b = " + (a == b) );
System.out.println("a != b = " + (a != b) );
System.out.println("a > b = " + (a > b) );
System.out.println("a < b = " + (a < b) );
System.out.println("b >= a = " + (b >= a) );
System.out.println("b <= a = " + (b <= a) );
}
}
逻辑运算符
public class Demo {
public static void main(String[] args) {
boolean a = true;
boolean b = false;
System.out.println("a && b = " + (a&&b));
System.out.println("a || b = " + (a||b) );
System.out.println("!(a && b) = " + !(a && b));
}
}
短路逻辑运算符
&&与&的区别
相同:当运算符两边的操作都为true是,结果才true
不同:
& 不论左边为true或者false,右边的表达式都会进行运算
&& 当左边为false时,右边的表达式不会进行运算
||与|的区别
相同:两边操作任意一边为true,其结果为true
不同:
| 不论左边true或者false,右边的表达式都会进行计算
|| 当左边为true时,右边的表达式不会进行运算
Scanner类
通过 Scanner 类来获取用户的输入。
Scanner类是属于引用数据类型
引用数据类型的使用
和定义基本数据类型变量不同,引用数据类型的变量定义及赋值有一个相对固定的步骤或格式。
格式:
数据类型 变量名 = new 数据类型(); 其中new 关键字创建对象
每种引用数据类型都有其功能,我们可以调用该类型实例的功能。
变量名.方法名();:每个方法会完成特定的功能
Scanner类使用
Scanner类是引用数据类型的一种,我们可以使用该类来完成用户键盘录入,获取到录入的数据。
Scanner使用步骤:
1.导包(写在类文件的最顶部):import java.util.Scanner;
2.创建对象实例:Scanner sc = new Scanner(System.in);
调用方法:
3.调用对应的方法:
int i = sc.nextInt();用来接收控制台录入的数字
String s = sc.next();用来接收控制台录入的字符串
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
//创建Scanner引用类型的变量
Scanner sc = new Scanner(System.in);
//获取数字
System.out.println("请输入一个数字n");
int n = sc.nextInt();
System.out.println("n的值为" + n);
//获取字符串
System.out.println("请输入一个字符串s");
String s = sc.next();
System.out.println("s的值为" + s);
}
}
使用Scanner 类,录入两个整数数据,并对这两个数据求和,输出其结果
class Test2_Scanner {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); // 创建键盘录入对象
//键盘录入练习:键盘录入两个数据,并对这两个数据求和,输出其结果
System.out.println("请输入第一个整数:");
int x = sc.nextInt(); //将键盘录入的数据存储在x中
System.out.println("请输入第二个整数:");
int y = sc.nextInt(); //将键盘录入的数据存储在y中
int sum = x + y;
System.out.println(sum);
}
}