A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

侯10

初级黑马

  • 黑马币:13

  • 帖子:5

  • 精华:0

© 侯10 初级黑马   /  2019-5-25 17:12  /  713 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

20190517
一、Java历史
Sun公司(Stanford University Network)1995年
JavaEE 企业版 (企业级别的应用 网站 大数据处理) JavaSE 标准版 JavaME 嵌入式(eg.Android kotlin)
GitHub 论坛
C JNI java Python(胶水语言)
图灵 计算机的思想 人工智能之父 CPU(计算、流程控制) 冯诺依曼 计算机使用二进制
二、Dos命令
MS-DOS(Microsoft Disk Operating System)
命令提示符(cmd)command
启动 Win+R 切换盘符 D: 进入文件夹 cd 进入多级文件夹 cd 文件夹1\文件夹2\ 返回上一级 cd .. 返回根路径 cd \ 查看当前内容 dir(directory) 清屏 cls (clear screen) 退出 exit
编译:编译Java代码 生成一个.class文件 (字节码文件) 编译命令 javac HelloWorld.java 运行命令 java HelloWorld
*Win + E 直接显示我的电脑
三、JVM, JRE, JDK
IDE(Integrated Development Environment)集成开发环境
JVM(Java Virtual Machine)虚拟机
是运行所有Java程序的假想计算机,是Java程序的运行环境。
跨平台:任何软件都需要在操作系统之上运行,Java编写的软件可以运行在任何操作系统上,这个特性称为Java语言的跨平台特性。该特性由JVM实现。我们编写的程序运行在JVM上,而JVM运行在操作系统上。
JRE(Java Runtime Environment)运行环境
是Java程序的运行时环境,包含JVM和运行时所需要的核心类库(运行类库)。
JDK(Java Development Kit)开发工具包
是Java程序开发工具包,包含JRE和开发人员使用的工具。
四、注释
1.单行注释
//注释信息
快捷键:Ctrl + / 取消注释:Ctrl + /
2.多行注释
/*注释信息*/
快捷键:Shift + Ctrl + / 取消注释:Shift + Ctrl + /
3.文档注释
/**注释信息*/
五、类
Java程序中最基本的组成单位是类。
类的定义格式:
public class 类名 {
}
六、关键字
关键字:已经被Java语言使用的个别有特殊含义的单词,定义变量时不能使用
特点:
1.关键字的字母全部小写
2.在编辑器里面有特殊的颜色
七、常量
常量:在程序运行期间值不会发生变化的量
字符串常量:"两个双引号之间的数据都称之为字符串常量"
整数常量
小数常量
字符常量:在两个单引号中间,有且仅有一个字符。 正确:‘A’, ‘ ’, ‘中’
布尔常量 true false 只有两个,且都是关键字
空常量 null 空常量不能直接输出
八、数据类型
1.计算机存储单位
无论内存还是硬盘,计算机存储设备的最小信息单元叫作“位(bit)”,又称之为“比特位”,通常用小写字母b表示。
计算机中最小存储单位叫作“字节(byte)“,通常用大写字母B表示。
位(bit):0或1 字节(Byte):8位一字节,数据储存的最小单位
1 Byte = 8 bit
1 KB = 1024 Byte 1 MB = 1024 KB 1 GB = 1024 MB 1 TB = 1024 GB 1 PB = 1024 TB 1 EB = 1024 PB 1 ZB = 1024 EB
九、变量
1.计算机上的存储位置
硬盘
内存
缓存(寄存器)
IO流
GC
木桶原理 硬盘效率最低
2.变量
暂存位置:内存
变量本质上是内存上的一小块区域。
格式:
数据类型 变量名 = 数据值;
3.变量使用的注意事项
1.变量名不能重复
2.使用变量前,一定要给变量赋值
3.定义long类型数据,数据后要加后缀L;定义float类型数据,数据后要加后缀F
十、标识符
标识符:给类、变量、方法起名
1.标识符定义规则
1.由数字、字符、下划线(_)、美元符($)组成
2.不能以数字开头
3.不能是关键字
4.区分大小写
2.标识符命名约定
1.小驼峰:方法、变量
name
firstName
2.大驼峰:类、接口
Student
GoodStudent
十一、数据类型转换
1.类型转换分类
自动类型转换
强制类型转换
2.自动类型转换
把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量
3.强制类型转换
把一个表示数据范围大的数值或者变量赋值给另一个表示数据范围小的变量
例: int k = (int)88.888;
由于可能造成数据溢出、精度损失,不建议进行强制类型转换。

20190518
一、算术运算符
1.算术运算符种类:
+
-
*
/
%
注意事项:整数操作只能得到整数,要想得到小数一定要有浮点数参与。
Eg:
int a = 6;

int b = 4;

System.out.println(a / b); // 1
double a = 6;

double b = 4;

System.out.println(a / b); // 1.5
2.字符的“+”操作
字符进行“+”操作时,拿字符在计算机底层对应的数值来进行计算。
‘A’ ===> 65
‘a’ ===> 97
‘0’ ===> 48
算术表达式中包含多个基本数据类型时,整个算术表达式的类型会自动进行提升。
1)提升规则:
1.byte, short, char类型将被提升到int类型
2.整个表达式的类型自动提升到表达式中最高等级操作数同样的类型。
等级顺序:byte, short, char ===> int ===> long ===> float ===> double
2)ASCII码
ASCII /ˈæski/ (American Standard Code for Information Interchange)
3.字符串的“+”操作
当“+”操作中出现字符串时,这个“+”是字符串连接符。
字符串类型可以和其他任何数据类型进行拼接。
从左到右按优先级运算,一旦出现字符串类型,就变成了字符串拼接操作。
System.out.println(88 + 8 + “HelloWorld” + 55 + 5); // 96HelloWorld555
4.操作符优先级
5.求任意数字指定位上的数值
1)先使用整除操作将要求的数字移动到各位上,再使用取余操作取出最后一位上的值。
Eg. 123456789 先整除10000得到12345,再对10取余得到5
2)或先对100000取余得到56789,再整除10000得到5
二、赋值运算符
1.=
一般都是把赋值运算符右边的表达式计算出结果之后,再赋值给左边的变量。
2.扩展赋值运算符:+=, -=, *=, /=, %=
扩展的赋值运算符隐含了强制类型转换。
short num = 10;

num += 1; // 正确
short num = 10;

//num = num + 1; 错误,应改成:

num = (short)(num + 1);
三、自增自减运算符
1.单独使用时,“++”放变量前后,结果相同
2.参与操作时:i++ 先用再加;++i 先加后用
注意:只有变量才能进行自增自减操作
四、关系运算符
<, <=, >, >=, ==, !=
注意:关系运算符不能连续用。3 < x < 6错误!
五、逻辑运算符
1.基本逻辑运算符
连接多个布尔类型的结果。
与 & 全true为true;有一个false为false
或 | 有一个true为true;全false为false
异或 ^ 不同为true;相同为false
非 !
2.短路逻辑运算符
短路与 &&
短路或 ||
Eg.
int i = 10;

int j = 20;

System.out.println((i++ > 100) & (j++ > 100)); // false & false

System.out.println(i); // 11

System.out.println(j); // 21

System.out.println(“=======================“);

i = 10;

j = 20;

System.out.println((i++ > 100) && (j++ > 100)); // false && false

System.out.println(i); // 11

System.out.println(j); // 20
注意事项:
逻辑与&,无论左边真假,右边都要执行。
短路与&&,如果左边为真,右边执行;如果左边为假,右边不执行。(遇到第一个false,后面的内容将不再执行)
逻辑或|,无论左边真假,右边都要执行。
短路或||,如果左边为假,右边执行;如果左边为真,右边不执行。(遇到第一个true,后面的内容将不再执行)
六、三元运算符
关系表达式 ? 表达式1 : 表达式2;
七、数据输入
1.Scanner使用的基本步骤
1)导包
import java.util.Scanner;
导包的动作必须出现在类定义的上边
2)创建对象
Scanner sc = new Scanner(System.in);
以上只有sc是变量名,可变;其余不可变
System.in代表从键盘输入
3)接收数据
int i = sc.nextInt();
以上只有i是变量名,可变;其余不可变
2.Scanner 类
nextInt(); // 读取整型数

next(); // 读取字符串,遇到空格结束本次读取

nextLine(); // 读取字符串,遇到空格不结束读取,但会接收回车换行
如果希望读取一个整数后,接着读取一个字符串,代码如下:
int num = scanner.nextInt();
String str = scanner.nextLine(); // 用来读取回车换行'\n'
String str2 = scanner.nextLine();
3.引用类型的一般使用步骤
1)导包
import 包路径.类名称;
如果需要使用的目标类,和当前类位于同一个包下,则可以省略导包语句。
只有java.lang包下的内容不需要导包。
2)创建
类名称 对象名 = new 类名称();
3)使用
对象名.成员方法名()
八、流程控制
1.顺序结构
从上往下,依次执行
2.分支结构
1)if语句
a.单if语句
if(关系表达式){
语句体;
}
b.if-else语句
if(关系表达式){
语句体1;
} else {
语句体2;
}
c.if-else if …-else语句
if(关系表达式){
语句体1;
} else if (关系表达式2) {
语句体2;
}

else {
语句体n+1;
}
注意:做数据测试时,要考虑正确数据、边界数据、错误数据
错误数据最好放在第一个分支,可提高运行效率。
2)switch语句
20190520
一、选择结构语句-switch
1.switch语句格式

switch在底层创建一个表,创建表速度较慢,但执行效率较高。
2.case穿透
在switch语句中,如果case控制的语句体后面不写break,将出现穿透现象。在不判断下一个case的情况下,直接向下执行,直到遇到break,或者整个switch语句结束。
二、for循环语句
1.循环结构
初始化语句
条件判断语句
循环体
条件控制语句
2.格式
for(①初始化语句;②条件判断语句;④条件控制语句) { ③循环体语句; }
3.执行流程
①执行初始化语句(只在循环开始时执行一次) ②执行条件判断语句,看其结果是true还是false 如果是false,循环结束 如果是true,继续执行 ③执行循环体语句 ④执行条件控制语句(步进语句)通常为i++ ⑤回到②继续
三、while循环语句
基本格式: while(条件判断语句) { 循环体语句; }
完整格式: 初始化语句; while(条件判断语句) { 循环体语句; 条件控制语句; }
执行流程: 1:执行初始化语句 2:执行条件判断语句,看其结果是true还是false 如果是false,循环结束 如果是true,继续执行 3:执行循环体语句 4:执行条件控制语句 5:回到2继续 for格式: for(初始化语句;条件判断语句;条件控制语句) { 循环体语句; }
四、do-while循环语句
基本格式: do { 循环体语句; }while(条件判断语句);
完整格式: 初始化语句; do { 循环体语句; 条件控制语句; }while(条件判断语句);
执行流程: 1:执行初始化语句 2:执行循环体语句 3:执行条件控制语句 4:执行条件判断语句,看其结果是true还是false 如果是false,循环结束 如果是true,继续执行 5:回到2继续
五、三种循环的区别
1.do-while先执行循环体,所以至少执行一次。
2.for循环初始化的变量在for循环结束后消失;while循环在外部初始化变量不属于其语法结构,可继续使用。
六、死循环
for(;;){
循环体;
}
while(true){
循环体;
}
do{
循环体;
} while();
七、跳转控制语句
continue 跳过某次循环体内容的执行,继续下一次的执行
break 终止循环体内容的执行(结束当前整个循环)
八、Random
1.Random的作用和使用步骤
作用:用于产生一个随机数
使用步骤
①导包
import java.util.Random;
②创建对象
Random r = new Random();
③获取随机数
int number = r.nextInt(10); // [0,10)
2.注意
int num = r.nextInt(); // 范围是int所有范围,有正负两种
int num = r.nextInt(10); // [0,10) 参数代表的范围,左闭右开区间

20190521
一、IDEA开发工具
Intellij IDEA
Jetbrains
1.区分IDEA的项目和模块
进到文件里面能够看到.idea文件夹、out文件夹,可能是project
进到文件里面能够看到.iml文件夹,可能是module
out目录是存储编译后的.class文件
src目录是存储编写的.java源文件
2.IDEA中项目结构
Live Templates 活动模板
3.IDEA中模块操作
1)新建模块
2)删除模块
remove module
3)导入模块
二、数组
1.数组定义格式
数组(array)是一种用来存储多个相同类型的数据的容器。
格式一、数据类型[] 变量名;
int[] arr;
格式二、数据类型 变量名[];
int arr[];
2.数组初始化
Java中的数组必须先初始化
未初始化时,数组里的数据的默认值:
整数 0
浮点数 0.0
字符 ‘\u0000’
布尔 false
引用类型 null
1)动态初始化
数据类型[] 变量名 = new 数据类型[数组长度];
// 可拆分
int[] arr = new int[3];
arr里放的是逻辑上的地址值,和物理地址有区别
new:为数组申请内存空间
数组申请的是连续的空间
2)静态初始化
// 标准格式,可拆分
int[] arr = new int[]{1,2,3};

// 简化格式,不可拆分
int[] arr = {1,2,3};
int[] arr = {a,b,1,2,3}; // 大括号中也可以是变量
3.数组元素访问
索引(下标)
4.数组操作的异常问题
1)索引越界(ArrayIndexOutOfBoundsException)
访问了数组中不存在的索引对应的元素
2)空指针异常(NullPointerException)
访问的数组已经不再指向堆内存的数据
5.获取数组元素个数
数组名.length
Eg. arr.length
6.遍历数组
for(i =0; i < arr.length; i++){

     System.out.println(arr);

}
7.二维数组
public class Test {
     public static void main(String[] args) {
         // int[][] arr = new int[2][3]; // 动态
         int[][] arr = {{1, 2, 3},{4, 5, 6}}; // 静态
         for (int i = 0; i < arr.length; i++) {
             for (int j = 0; j < arr.length; j++) {
                 System.out.println(arr[j]);
             }
         }
     }
}

三、内存
存储设备:硬盘、内存、缓存(寄存器 CPU)
Java的内存需要划分成为5个部分:
栈(Stack)
方法执行时会进栈执行。
栈中存放的都是方法的局部变量。使用完毕后,立即消失(等着被GC Garbage Collection回收)。
局部变量是方法的参数,或者是方法{}内部的变量。一旦超出作用域,立刻从栈内存中消失。
堆(Heap)
new出来的东西(实体、对象)都在堆中。
堆内存里的东西都有一个地址值(十六进制)。0x000
堆内存里的数据都有默认值:
整数 0
浮点数 0.0
字符 ‘\u0000’
布尔 false
引用类型 null
方法区(Method Area)
存储class相关信息(加载字节码文件,并对字节码文件进行处理)
包含方法的信息(死信息,方法的运行一定在栈中)
本地方法栈(Native Method Stack)
与操作系统相关
寄存器(PC Register)
与CPU相关

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马