目录
jdk安装及环境配置
java前置知识
编写一个HelloWorld
常量
数据类型
变量
类型转换
算数运算符
一元运算符(++ --)
关系运算符
逻辑运算符(与或非,逻辑异或)
三元(三目)运算符
Scanner类的简单使用
jdk安装及环境配置
看到的一篇文章,讲的很详细。可以参照这个:jdk8安装与环境变量的配置
java前置知识
java跨平台原理
- 是因为在对应的系统(window,linux,mac)上,都安装了对应的JVM(java虚拟机),所以才能在每个平台都能编译
JRE与JDK的区别
- JDK是Java程序开发工具包,包含了JRE和开发人员使用的工具
- JRE是Java程序运行时的环境,包含了JVM和运行时所需要的核心库
- 如果我们想要运行一个已有的Java程序,只需要安装JRE即可
- 如果我们想要开发一个全新的Java程序,那么就需要安装JDK了
计算机存储单元
- 内存和硬盘都可以进行存储,计算机存储设备的最小信息元叫 位(又叫比特位 / bit / b)
- 而计算机中的最小存储单位叫 字节(byte / B)
Dos常用命令
- window + R 调出cmd
- 盘符: 可以切换到指定盘符
- cd 文件夹名 可以切换到指定盘符,文件名可以按Tab键补全
- cd .. 可以切换到上一层文件目录
- cd .\ 可以切换到当前文件的根目录
- dir 查看文件夹下的所有文件信息
- cls 清屏
- exit 退出
编写一个HelloWorld
新建一个文件夹(javaCoding),文件夹里新建文本文档HelloWorld.txt,写入以下内容
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
然后把txt后缀名改为java,也就是HelloWorld.java
然后鼠标点击文件夹,输入cmd
会弹出cmd窗口,窗口中输入 javac HelloWorld.java 按下回车
此时文件夹中会出现编译后的字节码class文件
然后cmd窗口中我们再输入 java HelloWorld 就会显示内容
注意:如果文件中输出的内容包含中文,则编译的指令是
javac -encoding UTF-8 文件名.java
常量
- 就是不会变化的量,一旦赋予了初始值,则后面就不能进行修改了
类型 | 说明 | 举例 |
字符串常量 | 双引号括起来的内容 | "aabbcc" |
整数常量 | 不带小数点的数字 | 1 |
小数常量 | 带小数的数字 | 1.1 |
字符常量 | 用单引号括起来的内容,且只有一个 | 'a' |
布尔常量 | true或者false | false |
空常量 | null(空值) | 不能够输出 |
数据类型
- java是强类型语言,对每一个数据都必须作出明确的数据类型,才可以进行使用。不同的数据类型也分配了不同的内存空间
- 基本数据类型又可分为 4 大类,即整数类型(包括 byte、short,int 和 long)、浮点类型(包括 float 和 double)、布尔类型和字符类型(char)
默认值及所占字节
变量
- 在程序运行中,其值可以发生改变的值
变量类型 变量名 = 变量值;
int num = 100; // 定义了一个变量名为num的变量,是数字型,初始值为100
// 或者这种方式
int num;
num = 100;
注意:
- 定义long类型时,需要在后面加上L
- 定义float类型时,需要在后面机上F
public static void main(String[] args) {
// 声明浮点数时,再后面要加上f或者F
float pi = 3.1415926f;
System.out.println(pi);
// 声明long类型时,需要在后面加上L或者l
long count = 123456789L;
System.out.println(count);
}
类型转换
- 分为自动类型转换和强制类型转换
- 小数默认是double类型
- 数字默认是int类型
自动类型转换
- 把一个表示范围小的数值或者变量赋值给另一个数据范围大的变量(也就是从小到大)
double num = 10; // 由数字型转成双精度型,会自动转换
强制类型转换(不推荐)
- 把一个表示范围大的数值或者变量赋值给另一个表示范围小的变量(也就是从大到小)
目标数据类型 变量名 = (目标数据类型)值或变量
int num = (int)9.99; // 9 把浮点型转成整数型,从大到小,需要强制转换
算数运算符
- 一共有 +(加) -(减) *(乘) /(除) %(取余) 这5种
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println(a + b); // 30
System.out.println(b - a); // 10
System.out.println(a * b); // 200
System.out.println(b / a); // 2
System.out.println(b % a); // 0
float c = 9.99f;
System.out.println(a + c); // 19.99
}
- char类型 + 数字型 如果char的值非数字,则会转变成ASCII码对应的数字进行计算
public static void main(String[] args) {
char a = 'a'; // a 对应的ASCII码值为 97
int b = 20;
System.out.println(a + b); // 117
}
- 算数运算符中包含多个基本数据类型的值时,整个算数表达式的类型会自动进行提升
提升规则
byte / short / char 参与运算时,会自动提升到int类型
int 参与运算时,会自动提升到long类型
long 参与运算时,会自动提升到float类型
float 参与运算时,会自动提升到double类型
- 如果是字符串+操作,则 字符相连
public static void main(String[] args) {
String a = "999";
System.out.println(a + 0); // 9990
}
一元运算符(++ --)
- 前自增或者前自减,都会先对自身进行增或者减,然后再参与其他临近的运算
public static void main(String[] args) {
// 单独使用
int a = 10;
int res = (++a);
System.out.println(res); // 11
// 参与运算
int b = 99;
int res2 = ++b + --b + b;
// 1. ++b 会先自增,此时b也就是(99 + 1),然后再参与临近的运算 b = 100
// 2. --b 会先自减,此时的b也就是(100 - 1),然后再参与运算(99 + 1) + (100 - 1) b = 99
// 3. 然后再+b (99 + 1) + (100 - 1) + 99 b = 99
System.out.println(res2); // 298
System.out.println(b); // 99
}
- 后自增或者后自减,都会先参与其他临近的运算,然后再对自身进行增或者减
public static void main(String[] args) {
// 单独使用
int a = 10;
int res = (a--);
System.out.println(res); // 10
System.out.println(a); // 9
// 参与运算
int b = 99;
int res2 = b++ + b-- + b;
// 1. b++ 会先参与临近的运算,也就是 99 + ?(这里的问好是因为后面临近的运算也是b的操作,
// 不是确定的值) 然后再自增,此时b也就是(99 + 1) b = 100
// 2. b-- 会先参与临近的运算,也就是 99 + 100 然后再自减,此时的b也就是(100 - 1) b = 99
// 3. 然后再+b 99 + 100 + 99 b = 99
System.out.println(res2); // 298
System.out.println(b); // 99
}
关系运算符
- 关系运算符的结果都是布尔类型,也就是true或者false。关系运算符会产生一个布尔类型结果
- == != > >= < <= 一共就这6种,用于判断
- 双等要求类型和值都必须相同
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println(a == b); // false
System.out.println(a != b); // true
System.out.println(a > b); // false
System.out.println(a < b); // true
System.out.println('1' == 1); // false
}
逻辑运算符(与或非,逻辑异或)
- 判断表达式是否成立,判断的结果也是true或者false
- 与 & 短路与 && 或 | 短路或 || 非 ! 逻辑异或 ^
标志 | 说明 | 举例 |
& | 前后的表达式都为true,才为true 前后都会进行判断 可以判断前后不是同一类型的 | 0 & 1 // 0 false & true // false true & true // true |
&& | 前后的表达式都为true,才为true 但是如果前面的为false,则不会判断后面的,直接返回false 前后类型必须一致,才能进行判断 | 0 && 1 // 会直接报错 false && true // false true && true // true |
| | 前后的表达式都为false,才为false 前后都会进行判断 可以判断前后不是同一类型的 | 0 | 1 // 1 false | true // true false | false // false |
|| | 前后的表达式都为false,才为false 但是如果前面的为true,则不会判断后面的,直接返回true 前后类型必须一致,才能进行判断 | 0 || 1 // 会直接报错 false || true // true false || false // false |
! | 取反操作,true的会返回false,false的会返回true | !true // false !false // true |
^ | 异或操作,a ^ b(a和b结果不同则为true) | true ^ false // true true ^ true // false |
三元(三目)运算符
格式:
关系表达式 ?表达式1 :表达式2 ;
- 如果表达式成立,则执行表达式1,反之不成立,则执行表达式2
int a = true ? 10 : 20;
System.out.println(a);
- 当然,也可以进行链式调用(不推荐,比较乱,不如用if或者switch)
int a = true ? 10 : true ? 20: true ? 30 : 0;
System.out.println(a);
Scanner类的简单使用
- 需要用到Scanner这个类
- 第一步:进行导包
import java.util.Scanner;
- 第二步:new Scanner类,创建一个具体的实例化对象
Scanner input = new Scanner(System.in);
- 第三步:接收用户输入的数据,并进行下输入约束
int num = input.nextInt(); // 规定用户只能输入数字型
完整代码:
public static void main(String[] args) {
// 提示用户输入
System.out.println("请您输入一个整数数字:");
// 接收用户输入
Scanner input = new Scanner(System.in);
// 规定用户只能输入数字型
int num = input.nextInt();
// 显示用户输入的内容
System.out.println("您输入的数字为:" + num);
}