Note02
练习打字
1.键位 指法(金山打字)
2.多打字(聊天)
3.
相对路径
.
绝对路径
C:\
D:\
/
跨平台
编程语言(高级编程语言的编码程序运行步骤)
编码
idea、vscode、vim、文本文档写代码
编译
使用javac进行编译
javac Hello.java
会生成同名字节码文件
运行
Java进行运行
java Hello
高级语言的编译方式分为三种
编译型
使用专门的编译器,针对特定的操作系统,将源代码“翻译”成机器码,并且包装成该
平台所能识别的可执行程序(生成新文件)
c c++ 属于编译型语言
解释型
有专门的解释器,将源码解释成特定平台的解释码,并且立即执行,不会生成新文件,
就是将编译型语言的编译和执行结合成一步同时进行
缺点:效率低
python,shell等
混合型
编译+解释
源码要经过编译,生成与平台无关的字节
码.class文件,不是可执行程序
需要jvm去解释执行(java为不同的操作
系统,提供了不同的虚拟机)
java
Java跨平台原理
Write Once,Run any Where
(一次编写,到处运行)
常用命令
Java 编译命令
格式 Java [-d 目录路径] 文件名.Java
作用:编译源码文件,获得字节码文件,可选:将字节码文件放到-d后面指定位置
使用
javac Hello World.java //不指定目录.class存放到当前文件
javac -d obj/ HelloWorld//将编译后的.class存放到obj目录下
mkdir obj//创建一个名为obj的文件夹
dir //列出目录(windows)
ls //操作系统: Unix/Linux、macOS
java 运行的命令
格式 Java[-cp.class文件的目录]类名
作用 运行字节码文件 可选:从指定路径查找要运行的文件
使用 java HelloWorld
java -cp obj/ HelloWorld
1.在java文件中加入类的所属包名 package com.briup;
2.创建文件夹com,在com中创建briup,将Hello.java移动到briup中
3.(注意编译的位置和命令)C:\Users\屈东欣\Desktop\java\day02\com\briup>javac -d ../../obj/ Hello.java
..表示上一级,要在和com同级的obj中生成class文件,一直..寻找上级回退
4.运行C:\Users\屈东欣\Desktop\java\day02\com\briup>java -cp ../../obj com.briup.Hello
package
包名一般是公司域名的反写
Table类
Table类
定义格式:
package包名;
包名一般是公司域名的反写;
要求:
package语句必须是程序第一条可执行代码;
package语句在一个Java文件中最多只有一条,可以没有;[0,1)
这个包名的代码package com.briup;编译后,字节码文件会存放到com/briup下
场景:
教务系统
学生管理
新增 修改 删除 查询(增删改查)
教师管理
新增 修改 删除 查询(增删改查)
package 按角色去分模块
com.briup.students;
AddStudent
EditStudent
DeleteStudent
UpdateStudent
com.briup.teachers;
AddTeachers
EditTeachers
DeleteTeachers
UpdateTeachers
package 按功能去分模块
com.briup.add;
AddStudent;
AddTeachers;
com.briup.edit;
AddStudent;
AddStudent;
com.briup.delete;
AddStudent;
AddTeachers;
com.briup.update;
AddStudent;
AddTeachers;
导包(API文档 https://docs.oracle.com/javase/8/docs/api/index.html)
import 包名.类名;
import java.util.Scanner;
不需要导包就可以使用的
java.lang(System属于lang包所以不用导包)
JVM
垃圾回收器(可以主动提醒处理,但是可能不会立即实行,具体要看算法)
注意:
1.修改环境变量
1.三个确定都要点
2.重新打开cmd、vscode
2.编码
1、保存
2、先编译再运行
3.中文乱码
在没有乱码或者乱码没保存的时候改,不然更乱
UTF-8→GBK
4.找不到主类
环境变量里path出现一长串,
1.字节码文件生成没有
2.java HelloWorld 命令不对 文件名不对
3.CLASSPATH 的值不要写错 可以不写 或者写.
Note03
注释 (ctrl+/)
//单行注释 (单行注释可嵌套使用)
/*
* 多行注释(多行注释不能嵌套使用,如果嵌套,被注释的是第一个其他注释的最后一行)
* 多行注释(一般用于大段的业务描述内容)(前有*更加美观,更容易被看到)
*/
/**
文档注释
*/
编码习惯——编程规范
注释的内容要尽量写详细
编译时,编译器会忽略注释内容
初学者写代码可先把思路用注释写下来,然后再补充代码
关键字
定义:被java赋予特殊含义的单词
常用的代码编辑器对关键字有高亮显示
保留字
定义:暂时没被java赋予特殊含义的单词
将来有可能或者已经被其他编程语言设置为关键字
比如 const 在javascript中声明常量的关键字
标识符(变量,常量,方法的名字)
命名规则
1.不能使用Java中的关键字和保留字
2.可以由字母、数字、下划线、$组成
3.数字不能放开头
4.大小写敏感 a A
类和接口
每个单词的首字母都大写(大驼峰)
class Hello
class HelloWorld
class HelloMyWorld
方法和变量
首字母小写,第二个单词开始每个首字母大写(小驼峰)
int num;
getStudentById();
常量:
全词大写 多个单词之间用下划线_分割
LIGHT_COLOR
MAX_NUM
临时变量 一般用下划线开头
_a
$尽量不用
思考?
_和$可以单独作为变量名吗?
int _ = 0; //Java SE 8 之后的发行版中可能不支持使用 '_' 作为标识符
int $ = 0; //可以,尽量不用
变量和常量的定义
常量:
定义:在程序运行中,它的值不可以发生改变
除了null,其他常量可以直接用输出语句输出
分类:
字面值常量:
字符串常量:用""括起来的0个或者1个或者多个字符
eg:""
"0"
"hello"
"a"
整数常量:
小数常量:
字符常量:''单引号括起来的单个字符
'a' 'B' '你' '好'
布尔常量:true false
空常量: null
自定义常量
声明final关键字
final int NUM_A=1;
类的常量要定义在main的外部
变量
定义:用于储存值的一种容器
强类型语言:在java中,声明变量需要指定他的数据类型,并且这个类型不能更改了
int a;
a=10;
a=10.1;//报错
弱类型语言:比如javascript,声明变量不需要指定数据类型,这个类型赋值时确定
let a;
a=10;
a=10.1;
a=true;
a={name:"张三",age;12};
a={1,2,3,4,5,6,7,{neme:"张三",age:12}}
声明
int a=10;//声明和初始化
或者
int a;//声明
a=10;//初始化
注意:
Java中变量一定要先声明,再赋值,再使用
S.o.p(a);//a?
int a;
int a;
S.o.p(a); //a=?
a=1;
数据类型
基本数据类型
整型
byte(1字节)
short(2字节)
int(4字节) a = 20;
long(8) b = 20L; b = 20l;
浮点型(不加d/f默认是double类型)
double(8字节) a=1.0d; a=1.0D;
float(4字节) a=1.0f;a=1.0F;
字符型
char(2字节) 单引号括起来的单个字符
不可以为空单引号
布尔型
boolean(值:true、false)(1位是一个比特,8位=1字节)
引用数据类型
类
String
数组
接口
比特位:bit 二进制 0 1
字节byte,是计算机分配内存的最小单位,通常用B表示
1byte == 8bits
姓名:String类
性别:char 男or女
年龄:int
身高:double
等
转义字符
\
\n 换行
\t 缩进
\\ \
\'
\"
Note04
进制(几进制就没有几)
二进制 由0和1组成 (0b开头) 逢二进一
0b1 ob0
0:0b0
1: 0b1
2: 0b10
3: 0b11
4: 0b100
十进制转二进制 除二取余法(20为例)
1.20/2=10...0
2.10/2=5...0
3.5/2=2...1
4.2/2=1...0
5.1/2=0...1
6.结束,结果为倒序,由下至上 0b10100
二进制转十进制
10100
1*2^4+0*2^3+1*2^2+0*2^1+0*2^0=20
八进制 由0-7组成(0开头)
00 07
7:07
8:010
9:011
十进制转八进制 除八取余法(20为例)
1.20/8=2...4
2.2/8=0...2
3.结束,结果为倒序,由下至上 024
八进制转十进制
十进制 由0-9组成
0 9
十六进制 由0-9,a,b,c,d,e,f组成(不区分大小写)(0x开头)
0x0a 0X0a
10:0x0a
11:0x0b
15:0x0f
16:0x10
17:0x11
十进制转十六进制 除十六取余法(20为例)
1.20/16=1...4
2.1/16=0...1
3.结束,结果为倒序,由下至上 ox14
数据类型转换
数据类型表示范围
double>float>long>int>short>byte
char(和short同阶梯)
隐式类型转换
1.在赋值过程中,小数据类型的值或者变量可以直接赋值给大类型变量,类型会自动转换
2.大类型变量,类型会自动转换
3.大类型赋值给小类型可能会丢失精度,所以编译错误
4.short\char\byte类型在做算数运算时(加减乘除取余),会自动提升int类型,然后再参与计算
5.各种类型的值都参与运算时,范围小的会自动提升为范围大的,然后再运算
显示类型转换(强制类型转换)
定义:
赋值过程中,如果大类型的赋值给小类型变量,编译报错,可以使用强制类型转换
(并不代表是万能的,不代表没有损失)
格式:
float float1 = (float)3.14;
float float2 = (float)((b11-5)*b12+b13);//整个算式+(),Shift+(
byte c1=3;
byte c2=4;
byte c3=3+4;
byte c4=c1+c2;//从int转换到byte可能会有损失 修改:byte c4=(byte)(c1+c2);
byte c5=c1+4;//从int转换到byte可能会有损失 修改:byte c5=(byte)(c1+4);
Note8.30
操作符(运算符)
定义:对于字面值常量和变量进行操作的符号,也叫运算符
表达式
定义:用操作符将字面值常量或者变量连接起来的式子,叫表达式。
eg:a + b
运算符的分类
算数运算符
+ - * / %(取余)
%:求余运算结果的正负符号只跟表达式运算符左边的操作数的符号有关
表达式中,只要有字符串参与,得到的结果都是字符串
字符串加其他任意类型数据,结果都是字符串
注意区分字符串跟字符
++:自增
--:自减
前置 ++a
后置 --a
赋值运算符
= *= <<= &= 等扩展的赋值运算符,隐含了强制类型转换
eg:s+=5;//不报错,完整是s=(short)(s+5);隐含了一个强转
比较、条件、关系 运算符(Test_Compare)
> < >= <= == !=(不等于)
小练习:从键盘录入两个整型数字,比较其大小,输出结果。
移位操作符
>> << >>>
位操作符
& |
逻辑操作符
&& 与运算 带逻辑短路(第一个判断式子为假,后面的就不去判断了)
2 > 1 && 3 > 2 同真则真
2 > 4 && 3 > 2 有假则假
& 与运算 不带逻辑短路
|| 或运算 带逻辑短路(第一个判断式子为假,后面的就不去判断了)
true || false 结果为 true 有真则真
false || false 结果为false 同假则假
| 或运算 没有短路功能
! 非 取反
!true为false
!false为true
^ 异或
如果两个数都是0 那么结果是0
如果两个数都是1 那么结果是0
如果一个为1一个为0 那么结果是1
练习:从键盘录入两个整型值,判断能否被三或五整除
三目运算符(可嵌套)
表达式?语句1:语句2 (表达式成立执行语句1,不成立执行语句2)
书写简单,可读性较低,不建议使用
练习:键盘输入两个整数,求两个数的最大值和最小值
a,b
String s1=(x>y)?"":"";
输出的内容:a=5,是最大值;
流程控制