一.常用Dos命令
盘符切换
盘符号: d:/e:/f:
dir:罗列当前目录/盘符所有的文件以及文件夹的信息
cd 进入单级目录/多级目录中
cd.. 回退上一级目录
cd\ 回退根目录
md 目录名称 创建目录(创建文件夹)
rd 目录名称 删除空目录
rd /s 目录名称 循环删除带内容的目录
rd /s /q 目录名称 不询问删除带内容的目录(暴力删除)
copy con 文件名称 ---回车--进入编辑模式--- ctrl+z(退出)---回车---创建完成
del 删除单个文件 /批量删除带指定后缀的所有文件 del *.java/*.txt
ping ip地址/域名 :查看自己本机是否能够通信
ipconfig :查看自己的本机ip地址信息
二、Java语言的平台版本
1、JavaSE 针对桌面应用程序的开发
举例:模拟 桌面版的网络聊天室
2、JavaME 针对嵌入式设备提供的一套解决方案
3、JAVAEE 针对企业级开发的解决方案(我们以后的方向)
针对Web程序开发(使用web技术:JavaEE有13种技术:
Servlet(前后端交互的服务器程序开发 server Applet)
jsp:能够写Java代码的html页面 java server Page
Cookie:用户在浏览网站---产生临时数据 存储在浏览器中
HttpSession... 存储在服务器端....
javamail:邮件激活技术
....
SSM:主流框架
微服务/分布式.. .
)
js(JavaScript:前端的内容)
三.Jdk,Jre,JVM是什么,他们的包含关系
Jdk:Java开发工具包:里面包含了jre(Java的运行环境)和以及所包含Java常用的工具
Jre:Java运行环境 我们写好的Java程序,它需要前提运行环境,使用JVM调用的程序中的main方法才能运行
JRE里面包含了JvM,以及在运行的时候Java开发所需要的核心类库(jre目录--lib目录--rt.jar)
JVM:Java虚拟机---(假象计算机:自己的内存分配/有自己的网络...),它本质就一个多线程的(至少两条线程:垃圾回收线程/主线程main(用户线程))
JDK > Jre >Jvm
四.Java的跨平台性
Java语言特点:开源(开放源代码) 跨平台的(跨操作系统),必须在对应的系统上安装对应版本的jvm Java文件,就可以实现 移植性(一处编译,到处浪) Linux: jdk-8u152-linux-x64.tar.gz (tar.gz格式) windows jdk.xxxx.exe
五.利用Dos命令写Java代码
1.配置path环境变量
1.为什么配置path环境变量
想让我们的Java文件在任何目录/任何地方都能够进行编译(编译的是java文件)和运行(运行的是类)
javac 源文件.java
java class文件的前缀(类名)
java文件在哪个目录中---需要在指定的目录中来进行编译和运行
2.如何配置:
第一种方式:(不建议)
直接将jdk安装目录的bin路径 复制到系统环境变量中path里面即可
第二种方式:(推荐用的)
需要在系统变量中新建变量名:JAVA_HOME
变量值:D:\Java\jdk1.8.0_162
path中:%JAVA_HOME%\bin;后面其他系统变量
2.用Dos命令写java代码
1)安装完成jdk之后 ---进入bin里面
因为bin目录里面:有我们java文件的操作指令
javac.exe 编译指令:将写好的java文件需要编译
java.exe 运行指令:需要将java文件编译后---产生 类名.class (字节码文件)
2)首先在bin里面去新建一个文本文件(显示后缀)
名称:HelloWorld.txt
3)编写内容
class 类名(建议和文件名称一致){
//固定的一个格式:能够被Jvm识别的main方法(程序的入口)
public static void main(String[] args){
//输出一句话:helloworld
System.out.println("Hello World") ;
}
}
4)进入dos控制台
进入到到jdk安装目录的bin目录里面
cd D:\develop_software\Java\jdk1.8.0_162\bin
5)编译HelloWorld.java文件
javac HelloWorld.java (java源文件带后缀)---没有问题--产生类名.class
java 运行的字节码文件的前缀
java HelloWorld
六.关键字
关键字:被Java语言赋予特定含义的单词
在高级记事本或者开发工具eclipse/idea中,针对关键字
有一种特殊颜色标记
class:Java中最基本的单元 (定义一个类)
public:权限修饰符(公开的/公共的:访问权限足够大)
static:静态修饰符(面向对象中讲(共享/共用))
void:和Java中的方法定义有个关系(方法中讲解)
关键字还有很多:数据类型等等,随着不断的学习,我们的关键字是
越累越多,每一个单词都有一种特定含义(关键字都是小写!)
七.标识符
1.定义
是一种给类名,方法名,接口名,变量名,常量等,起名字的一个字符序列)----必须"见名知意"
2.组成规则
组成规则:
1)26个英文大小写字母
2)$符号
3)_下划线
4)数字字符
3.组成标识的注意规则
1)虽然可以有数字字符出现,但是数字不能开头
2)Java严格区分大小写 写标识符的时候一定要"见名知意"
3)Java中的关键字不能作为"标识符"
4.给包起名字
包(文件夹,都是字母小写)
(package):使用(面向对象中使用)
一般都是多级包(公司域名反写)
单级包
com
Hello.java
xxx.java...
多级包(包和包(目录)之间使用.隔开)
com.qf.dev
xx.java
com文件夹
qf文件夹
dev文件
xx.java文件
5.给类起名字
遵循的是"大驼峰命名法"(阿里的规范)
如果当前类名/接口 是一个单词:那么首字母大写,其他单词小写
class Hello{}
class Demo{}
如果当前类名/接口 是多个单词:那么每一个单词的首字母都大写,其余小写
class HelloWorld{}
class MakeNameDemo{}
6.给方法和变量起名字
遵循的"小驼峰命名法"
如果是一个单词:
字母全部小写
main():jvm识别的main方法
自定义一个方法名:
check():检查的方法
int age = 20 ; //20岁
如果是多个单词:
第一个单词全部小写,从第二个单词开始,每个单词的
首字母都是大写
定义方法名
checkUserName():检查用户名的方法
checkUserPassword():检查密码的方法
int studentAge = 20 ;
7.给常量起名字
单个单词:字母全部大写(很少用)
HEELLO
实际开发中,使用的都是多个单词(使用居多)
每个单词字母都大写,中间下划线隔开
举例:
后期学习多线程:多线程里面有一些常量(线程的优先级)
MIN_PRIORITY = 1 最小优先级
NORM_PRIORITY = 5 默认优先级
MAX_PRIORITY=10 最大优先级
比如:第一阶段 将小项目:网络聊天室
客户端---服务器端:发送数据的时候,
服务器端如何得知是私聊/公聊模式呢?
自定义常量
public static final int PRIVATE_TAIK = 100 ;私聊
public static final int PUBLIC_TAIK = 200 ;公聊
class helloworld{
//可以这么写,但是不规范,在公司企业(都几乎遵循的阿里规范)
八.常量
1.定义
在程序的执行过程中,其值不发生改变的量
2.分类
第一类: 字面值常量
字符串常量
使用双引号括起来的内容 字符串+任何数据="新的字符串" ,此时的+是字符串拼接符号
任何数据+"字符串" = "新的字符串" ,此时的+是字符串拼接符号
字符常量
使用单引号括起来的单个内容 'a','b','0','A','B'
当字符不参与运算的时候:本身就是描述的就是字符本身的值,但是如果字符参与运算的时候,字符就会寻找对应的ASCII码表的值,进行运算!
'A'---ASCII码的值 :65
'a'---ASCII码的值 :97
'0'---ASCII码的值 :48
整数常量
小数常量
布尔常量
空常量
第二类:自定义常量(面向对象中讲--- final关键字(状态修饰符的))
3.进制以及进制的转换
二进制/八进制/十进制/十六进制
任意(X)进制----十进制 (位权展开法:系数乘以基数的权次幂相加的结果)
十进制----任意进制(X进制)(使用当前数据除基取余,直到除到商为0为止,余数反转!)
8421码: 快速转换法
更方便二进制和十进制的转换
1 1 1 1 1 1 1 1 二进制
128 64 32 16 8 4 2 1 十进制
十进制:100----二进制
0B1100100
X进制---Y进制
二进制---八进制
方式1:
分步骤
a)二进制---十进制 (8421码)
b)十进制---八进制(使用当前数据除基取余,直到除到商为0为止,余数反转!)
方式2:使用进制的概念
二进制---八进制
在二进制基础上,从右边往左边每三个比特位一组,计算出每个二进制对应的十进制数据
---从左到右,组合----八进制数据
九.变量
1.定义
在程序的执行过程中,其值发生改变的量!
2.三要素
1)数据类型
2)变量名:按照标识符的组成规则: 遵循 "小驼峰命名法"
3)初始化值:如果变量使用之前都没有赋值,就"报错了"
3.格式
数据类型 变量名 = 初始化值 ;
十.Java中的数据类型
1.基本数据类型
整数类型:默认int类型
byte 字节类型 占用的字节数1个字节 (-128~127:范围)
short 短整类型 占用的字节数 2个字节
int 默认类型 占用的字节数 4个字节
long 长整型 占用字节数 8个
实际开发中:整数使用最多int
其次long(以后用作定义时间--记录当前系统时间毫秒值(后期学习类---日期-->毫秒值))
浮点类型:默认就是double类型 实际开发中使用最多的就是double了! (举例:商品的价格(商城价格/市场价格)..)
float 单精度类型 (占4个字节)
double 双精度类型 (占8个字节)
字符类型
char 占两个字节数
char ch = 'A' ;
布尔类型 不参与运算(只是提供判断不和其他数据类型转换 ) :占1个字节
boolean (true/false)
boolean flag = true ;
2.引用数据类型
类,数组,接口
十一.基本数据类型---默认类型提升(隐式转换)与(显式转换)强制转换
1.默认类型提升(隐式转换)
byte,short,char三者之间不转换,但是分别自己参与运算的时候
优先提升为int(考点)---long---float---double
boolean类型:不参与任何的运算!它只是描述
逻辑判断的结果(true/false)
2.显式转换(强制转换)
当我们变量相加计算的时候,如果接收的类型 范围小于计算结果的数据类型
需要使用Java的强转类型转换-----让我们的数据进行类型匹配,防止出现(jvm提示不兼容的类型:)
显示转换(强制类型转换)--将大的数据类型---转换成----小的数据类型(int---byte)
不仅适用于基本类型,引用数据类型(后期研究引用类型)
格式:
目标数据类型 变量名 = (目标数据类型)(结果) byte result = (byte)(a+b) ;
实际开发中,尽量避免强转类型转换,可能会造成数据精度损失
十一.运算符
1.基本运算符
算术运算符:+,-,*,/(默认取整),%(模:求余数)
赋值运算符:=
举例:int a = 10 ; 将10赋值给int类型的变量a
关系(比较)运算符<,>,<=,>=,!=,==
逻辑运算符:
逻辑单与&,逻辑单或|,逻辑异或^,逻辑非!
位运算符
基本位与&,位或|,位异或^
<<,>>,>>> 移位符号
三元(三目)运算符
2.扩展运算符(++,--,==(比较运算符(true/false) )
场景1:
单独使用
后期的循环语句for
for(int x = 0 ; x < 10 ; x ++){
}
结论:无论++或者--在数据的前面还是后面,都是对当前数据本身进行
自增1或者自减1
场景2:
参与运算使用(笔试题中出现)
参与运算:
++或者--如果在数据的前面,先自增或者自减,然后在参与运算!
++或者--如果在数据的后面,先运算,然后在自增或者自减
3.扩展的运算符(+=,-=,*=,/=,%=(有自己的特点))
int x = 200 ;
+=举个例子:
x+= 100 ; --- 因为类型现在一致,类似于 x = x + 100 ;
将等号右边的数据和等号左边的变量x相加然后将结果在赋值给等号左边的变量x
4.逻辑运算符
逻辑单与& (并列关系)
特点:有false,则false
逻辑单或| (或的关系)
特点: 有true,则true
逻辑异或^
特点: 相同则为false,不同则为true
简单记忆:
男女关系问题
男男 :false
女女 :false
男女 : true
女男 : true
逻辑非!
特点:非true,则false;非false,则true
偶数个非是它本身!
逻辑双与&&和逻辑单与&有什么区别?
共同点:
都是表示并列关系,基本特点:有false,则false
不同点:
具有"短路"效果
逻辑双与&& 连接的表达式:如果左边是一个false,右边就不执行了!
逻辑双或||和逻辑单|的区别
基本的特点:有true,则true,表示或的关系
不同点:
逻辑双或||连接的左边表达式如果是true,右边不执行了,具有短路效果!
好处:提高逻辑判断的执行效率,开发中经常使用时逻辑双与&&和逻辑双或||
5.位运算符
位运算符: 就是对当前这些数据进行计算的(补码进行计算的)
基本位运算符:
位与&: 有0则0
位或|: 有1,则1(位异或的特点:
一个数据被另一个数据如果位异或两次,其值是它本身!)
位异或^: 相同则为0,不同则为1
一个数据被另一个数据如果位异或两次,其值是它本身!
例如:把a跟b的值互换
a = a ^ b ;
b = a ^ b ;此时b = a
a = a ^ b ;此时a = b
~反码: 全部按位取反(0变1,1变0)
其他的位运算符:移位符号
<<:左移
>>:右移
>>>:无符号右移
<<:左移
将这个数据(补码)向左移动,将高位丢弃掉,右边补0
快速应用:
将<<这个符号左边的数据乘以2的移动次幂
面试题:
请用有效的方式快速写出 2乘以8的结果: 16
2 << 3 2左移3位
>>:右移
将这个数据(补码)向右移动,最高位是1,左边补1;最高位是0,左边补0;
快速使用:
将>>符号左边的数据除以2的移动次幂
>>>:无符号右移
无论最高位是1还是0,那么在左边始终补0
6.三目运算符
格式:(表达式)?执行 true的结果:执行false 的结果;
表达式:可以简单可以非常复杂
流程:
首先判断表达式是否成立,如果成立,则执行true的结果
否则,执行false的结果;
举例:
有两个变量 ,需要比较两个数据中的最大值;
(a>b)?a:b
比较三个数中的最大值(不推荐)
(x >y)?((x>z)?x:z):((y>z)?y:z)
十二.键盘录入数据
在写程序的过程中,想让程序更加灵活,使用Scanner类:
jdk提供的这个类----作用 "一个简单的文本扫描器"
目前:就是录入int类型数据
操作步骤
1)导包 import(关键字) java.util.Scanner ; 格式必须class类上面
需要在我当前的代码中使用jdk提供的这个类Scanner
2)创建一个文本扫描器对象 (键盘录入对象)
固定格式
Scanner 对象名(自己起名字) = new Scanner(System.in) ;
3)友情提示并录入int类型数据
System.out.println("请您输入一个数据:") ;
表示:录入的是int类型数据
int 接收的变量名 = 对象名.nextInt() ; //nextInt() ;键盘录入Scanenr的方法
4)然后 "接收的变量名 "输出出来"
列:
/比较较两个数据中的最大值,然后优化---使用键盘录入两个数据
//导包
import java.util.Scanner ;
//在Java中只要这些类不是java.lang包下的都需要import
class Test1{
public static void main(String[] args){
//创建文本扫描器对象(键盘录入对象)
Scanner sc = new Scanner(System.in) ;
//提示并录入数据
System.out.println("请您输入第一个数据:") ;
//录入
int firstNum = sc.nextInt() ;
System.out.println("请您输入第二个数据:") ;
//录入
int secondNum = sc.nextInt() ;
//比较较两个数据中的最大值,
//三元运算符
int max = (firstNum>secondNum) ? firstNum : secondNum ;
System.out.println("两个数据中的最大值是:"+max) ;
}
}
本文详细介绍了Java的基础知识,包括DOS命令的使用、Java平台版本、JDK、JRE和JVM的关系、Java的跨平台特性、Java代码的编写与执行过程。此外,还讲解了关键字、标识符的命名规则、常量与变量、数据类型、运算符、键盘录入数据等方面,是Java初学者的入门指南。
239





