目录
第 1 章 自己为什么要学Java
我想是因为......
第 2 章 Java 概述
2.1 什么是 JDK,JRE
2.1.1JDK 基本介绍
-
JDK 的全称(Java Development Kit Java 开发工具包)
JDK = JRE + java 的开发工具 [java, javac,javadoc,javap 等]
-
JDK 是提供给 Java 开发人员使用的,其中包含了 java 的开发工具,也包括了 JRE。所以安装了 JDK,就不用在单独 安装 JRE 了。
2.1.2JRE 基本介绍
-
JRE(Java Runtime Environment Java 运行环境) JRE = JVM + Java 的核心类库[类]
-
包括 Java 虚拟机(JVM Java Virtual Machine)和 Java 程序所需的核心类库等,如果想要运行一个开发好的 Java 程序, 计算机中只需要安装 JRE 即可。
2.1.3JDK、JRE 和 JVM 的包含关系
-
JDK = JRE + 开发工具集(例如 Javac,java 编译工具等)
-
JRE = JVM + Java SE 标准类库(java 核心类库)
3.如果只想运行开发好的 .class 文件 只需要 JRE
2.2 Java 转义字
Java 常用的转义字符
在控制台,输入 tab 键,可以实现命令补全
\t :一个制表位,实现对齐的功能
\n : 换行符
\ : 一个\
\" : 一个"
\' : 一个'
\r :一个回车 System.out.println("今天天气怎样\r上海“);
则输出的是”上海天气怎样“
2.3 Java 代码规范
-
类、方法的注释,要以javadoc的方式来写。
-
非Java Doc的注释,往往给代码的维护者看的,着重告诉读者为什么这样写,如何修改,注意什么问题等
-
使用tab操作,实现缩进,默认整体向右边移动,用shift+tab整体向左边移
-
运算符和 = 两边习惯性各加一个空格。
-
源文件使用utf-8编码
-
行宽度不要超过80字符
-
代码编写有次行风格和行尾风格
2.4 相关的知识补充: 相对路径, 绝对路径
第 3 章 变量
3.1 程序中 + 号的使用
1.当左右两边都是数值型时,则做加法运算
2.当左右两边有一方为字符串,则做拼接运算
3.运算顺序,是从左到右
3.2 数据类型
每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间(字节)。
上图说明 [有点重要,背下来!!!!]
-
java 数据类型分为两大类 基本数据类型, 引用类型
-
基本数据类型有 8 中 数值型 byte , short , int , long , float ,double] char , boolean
-
引用类型 [类,接口, 数组]
bie:计算机中的最小储存单位。 byte:计算机中基本储存单元,1byte=8 bit。
浮点数使用陷阱:
2.7不等于8.1/3(浮点数相除的时侯得到的是近似2.7的小数而不是2.7,
应该是以两个数的差值的绝对值,在某个精度范围内判断)
//正确的写法
if(Math.abs(num11 - num12) < 0.000001 ) {
System.out.println("差值非常小,到我的规定精度,认为相等...");
3.3字符类型(char)
1.java中还允许使用转义字符 ' \ '来将其后的字符转变为特殊字符常量。例如:char c3 = ' \n '
2.在java中,char的本质是一个整数,在输出时,是unicode码对应的字符。
3.char类型是可以进行运算的,相当于一个整数,因为它都对应有Unicode码。
System.out.println('a' + 10);//107
3.3 基本数据类型转换
注意 :1.(byte,short)和 char 之间不会相互转换。
2.byte,short,char 他们三者可以计算,在计算时首先转化为int类型。
byte b2 = 1;
byte b3 = 2;
short s1 = 1;
//short s2 = b2 + s1;//错, b2 + s1 => int
int s2 = b2 + s1;//对, b2
3.自动提升原则:表达式结果的类型自动提升为 操作数中最大的类型
3.4 强制类型转换
自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符 ( ),但可能造成 精度降低或溢出,格外要注意。
第 4 章 运算符
注释快捷键 ctrl + /, 再次输入 ctrl + / 取消注释
4.1 %本质
-
% 取模 ,取余。在 % 的本质 看一个公式!!!! a % b = a - a / b * b
System.out.println(10 % 3); //1
System.out.println(-10 % 3); // -1
System.out.println(10 % -3); //1
System.out.println(-10 % -3);//-1
-
a % b 当a是小数时,公式= a - (int)a / b * b
-10.5%3 = -10.5 - (-10)/3 * 3= -10.5 + 9 = -1.5 //注意: 有小数运算,得到结果是近似值
面试题
int i = 1;//i->1
i = i++; //规则使用临时变量: (1) temp=i;(2) i=i+1;(3)i=temp;
System.out.println(i); // 1
int i=1;
i=++i; //规则使用临时变量: (1) i=i+1;(2) temp=i;(3)i=temp;
System.out.println(i); //2
4.2 键盘输入语句
import java.util.Scanner;//表示把 java.util 下的 Scanner 类导入
public class Input {
//编写一个 main 方法
public static void main(String[] args) {
//演示接受用户的输入
//步骤
//Scanner 类 表示 简单文本扫描器,在 java.util 包
//1. 引入/导入 Scanner 类所在的包
//2. 创建 Scanner 对象 , new 创建一个对象,体会
// myScanner 就是 Scanner 类的对象
Scanner myScanner = new Scanner(System.in);
//3. 接收用户输入了, 使用 相关的方法
System.out.println("请输入名字");
String name = myScanner.next(); //接收用户输入字符串
System.out.println("请输入年龄");
int age = myScanner.nextInt(); //接收用户输入 int
System.out.println("请输入薪水");
double sal = myScanner.nextDouble(); //接收用户输入 double
System.ou.println("请输入性别");
char gender = myScanner.next().charAt(0);
System.out.println("人的信息如下:");
System.out.println("名字=" + name + "年龄=" + age + "薪水" + sal + "性别" + gender);
}
}
4.3 逻辑运算符
-
&&短路与:如果第一个条件为 false,则第二个条件不会判断,最终结果为 false,效率高
-
& 逻辑与:不管第一个条件是否为 false,第二个条件都要判断,效率低
-
||短路或:如果第一个条件为 true,则第二个条件不会判断,最终结果为 true,效率高
-
| 逻辑或:不管第一个条件是否为 true,第二个条件都要判断,效率低
4.4 运算符优先级
-
运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如右表,上一行运算符总优先于下一行。
-
只有单目运算符、赋值运算符是从右向左运算的。
-
一览表, 不要背,使用多了,就熟悉了。
4.5原码、反码、补码(重点 难点)
对于有符号的而言:
-
二进制的最高位是符号位:0表示正数,1表示负数
-
正数的原码,反码,补码都一样
-
负数的反码=它的原码符号位不变,其他位取反
-
负数的补码=它的反码+1,负数的反码 = 负数的补码 - 1
-
0的反码,补码都是0
-
java没有无符号数,换言之,java中的数都是有符号的
-
在计算机运算的时候,都是以补码的方式来运算的
-
当我们看运算结果的时候,要看它的原码
4.6 还有3个位运算符 >>, <<和>>>,运算规则:
-
算术右移 >>:低位溢出,符号位不变,并用符号位补溢出的高位
-
算术左移 <<: 符号位不变,低位补 0
-
>>> 逻辑右移也叫无符号右移,运算规则是: 低位溢出,高位补 0
-
特别说明:没有 <<< 符号
int a = 1 >> 2;
//1 => 00000000 00000000 00000000 00000001
// => 00000000 00000000 00000000 00000000
//本质是 1/ 2/2=0
int c =1 << 2;
//1 => 00000000 00000000 00000000 00000001
// => 00000000 00000000 00000000 00000100
//本质是 1*2*2=4