jdk安装目录:bin目录
win+R进入dos窗口,在dos窗口运行
javac.exe ------>Java文件的编译指令
java.exe ------->Java文件的运行指令
dos窗口指令
使用磁盘盘符号(不区分大小写)d:进入指定的单级目录cd 目录名称(文件夹名称)进入多级目录 cd 多级目录的地址路径;
cd / :直接回退到当期盘符的根目录;
cd.. :直接从当期目录回退上一级目录(目录:就是文件夹);
当期dos控制台的内容太多了,光看比较繁琐,这个清除屏幕:cls (clear screen);
创建文件夹(目录):md (make directory);
创建文件 copy con 文件的名称带后缀--->回车一下---->开始给文件中写内容,写完内容之后 ctrl+z,完成编辑----->回车完成文件创建;
删除文件夹(目录) rd 目录(文件夹)的名称 (rd---remove directory) 前提条件:删除的文件夹必须为空目录--->如果有内容,先要将文件夹的内容删掉;
删除文件:del 文件的名称 :删除单个文件 del 后面也可以使用*.xxx :删除所有的后缀名文件指定的批量文件;
rd的扩展指令:可以删除带内容的目录(循环是否删除) rd /s 文件夹(目录)名称: 询问是否删除这个带内容的目录(文件夹);
rd的另一个扩展指令:删除带内容目录:不询问是否删除,直接"暴力删除" rd /s /q 文件夹(目录)名称;
其他指令:
dir:罗列当期目录或者文件夹中的文件名称以及文件夹名称有哪些;
ipconfig:查看自己本机的ip地址;
ping 域名或者ip地址:查看自己本机是否能够和其他的机器之间通信;
mspaint: 打开windows自动的画图工具
calc:打开windows自动的计算器软件
control:打开计算机的控制面板
java语言的发展史:
一种编程语言,编程语言就是给计算机下达一些指令,完成特定的需求功能;
Java语言诞生时间:1995年正式推出
Java之父: 詹姆斯·高斯林(James Gosling)
Java语言jdk版本: 目前使用jdk8---涉及很多新特性,兼容jdk7以及jdk5的特性
Java语言的使用领域: 物流系统,电商行业,金融行业,以及互联网相关的行业
Java平台版本:
JavaSE:针对桌面应用程序以及商务应用程序的一套解决方案
(学习Java,JavaSE必备的)
JavaME:针对嵌入式设备的解决方案 (针对移动端:Android:基于Java)
JavaEE:针对开发企业环境提供的一套解决方案
Java语言环境搭建:
JVM:Java 虚拟机 (Java Virtual Machine):是一个假象计算机,运行在操作系统之上,
每一个不同的系统都有自己的对应的版本jvm,所有的Java程序都需要被jvm执行,而jvm依赖
于你自己的系统;
JRE:Java运行环境 (Java Runtime Environment):包含了Jvm以及运行时所支持的核心类
库; (类库:就包含很多java类)
JDK:Java development Kit:Java开发工具包 :包含了jre以及一些工具库
目的:
应该在任何目录(文件夹)里面的java文件都能够进行编译和运行;
方式:
方式1:就是将jdk的bin目录的路径复制一下,在此电脑----右键---属性----->高级系设
置------->环境变量----->系统变量------>path:将jdk的bin目录的路径复制复制到最
前面;(千万要删除path,导致系统指令崩掉)
方式1:弊端 当jdk升级了,需要手动更改path系统环境变量的jdk的路径,可能不小心造
成其他系统变量删除,不安全
方式1:弊端2: 后期学习服务器:二阶段 tomcat服务器,使用java编写的,启动的时候
寻找一个系统变量名字 JAVA_HOME,如果系统变量没有一个变量名为JAVA_HOME,
服务器会启动失败!
方式2: 此电脑----右键---属性----->高级系设置------->环境变量----->系统变量---
>新建变量名 :JAVA_HOME,变量值:jdk安装路径
在path里面---使用%JAVA_HOME%\bin
好处1:即使jdk升级,不需要手动更改path路径,直接改JAVA_HOME变量名的内容;
好处2:后期使用tomcat服务器,就可以正常启动
java中的注释:
单行注释和多行注释:不会被jvm解析,就是为了代码阅读性
关键字:
在Java语言中,每一个关键字有自己的含义(被Java语言赋予特定含义单词);
在高级记事本或者IDEA开发工具,关键字有颜色标记;
组成关键字的字母都是小写;
class: 表示在定义一个类 (Java中最基本的单元);
格式:class 类名{};
public:权限修饰符 (公共的/公开的/访问权限足够大);
static:静态修饰符 (基本的概念:共享/共用);
void :Java中的方法(函数),就是一个{}代码块;
标识符:
就是给包(Java中的关键字package) 类,以后学习的接口,方法,变量,常量等等起名字的一个字符序列. 起名字---->"见名知意";
给类起名字(和接口起名同理的)---->遵循"大驼峰命名法"
单个单词:单词首字母大写,其余小写
class Student{}--- 学生类
class S{} class A{} class B{}
多个单词:每一个单词的首字母都大写,其余单词小写
举例:
class HelloWorld{}
class
MakeNameDemo{}
给变量起名字(跟Java中的方法起名字同理的)---->遵循 "小驼峰命名法"
单个单词:字母全部小写
举例:
定义变量 int类型
int number = 100 ;
main(String[] args):程序的
入口:main方法
多个单词:第一个单词的字母全部小写,从第二个单词开始 每个单词的首字母都是大写,其余小写
举例:
定义一个变量 int类型
//苹果的价格
int applePrice = 7 ;
//自己的定义方法:
checkUserName()
给常量起名字:
单个单词: 单词字母全部大写 (实际开发很少见)
举例:
"HEELO" ,字面值常量
多个单词:在以后学习Jdk的API
(Application Programing Interface:应用程序接口文档)
jdk提供的源码---一些自定义常量:都是多个单词 每一个单词字母大写,单词和单词之间下划线隔开
举例:
jdk提供源 码:java.lang.Thread类:线程 (多线程中讲)
MIN_PRIORITY :最小优先级
NORM_PRIORITY :默认优先级
MAX_PRIORITY :最大优先级
标识符的组成规则:
1)可以是26个英文字母(大小写都可以)
2)可以是0-9的数字
3)可以是$或者_下划线
4)Java定义标识符:严格区分大小写
注意事项:
1)定义标识符(类名/接口名/方法名/常量/变量名):名字都不能以数字开头
2)定义标识符:起名字,不要出现Java中的关键字
3)起名字,做到四个字"见名知意"
常量(知道常见常量的分类)
在程序的执行过程中,其值不发生改变的量!
字符串常量:它使用使用""括起来的内容;"helloworld"
字符常量:字符常量 ,它使用单引号'' 括起来的单个内容;'a','A','0'
整数常量:25,100,....
小数常量:3.1415926...;12.34...
布尔常量:true,false
空常量:null
变量:
在程序执行过程,其值在不断变化--称为 变量
变量三要素:
1)限定范围---就是限定变量的数据类型
2)变量名---满足今天上午的:标识符的规范(见名知意)
3)初始化值----必须要限定的数据类型要一致!
数据类型(基本数据类型):
整数类型:char(-128~127) short int long
浮点类型: float double
字符类型: char
布尔类型: boolean
注意事项:
整数类型的长整型
浮点类型的单精度类型
在定义变量的时候,需要在初始化值的后面加上一个标记
long x = 10000000000L ; //L或者l
float f = 12.56F ; //F或者f
Java中的隐式转换与显示转换
隐式转换
:基本数据类型的默认类型提示
byte,short,char三者之间不转换,一旦参与运算,优先提升为int类型,---long--- float---double;
显示转换
不仅仅适用于基本数据类型,还适用于引用数据类型
强制类型转换(强转)
就是将的大的数据类型---小的数据类型格式
目标数据类型 变量名 = (目标类型)(表达式或者初始化值) ;
算术运算符
+,-,*,/,%(模:求余数)
扩展的算术运算符
扩展的算术运算符:++,--
情况1:单独使用:比较简单无论++或者--在数据的前面还是后面,都是对这个变量本身自增1或者自减1
情况2:参与运算使用
1)如果++或者--在数据的前面,先进行自增或者自减,然后参与运算;
2)如果++或者--在数据的后面,先运算,然后进行自增或者自减;
赋值运算符的扩展赋值运算符的特点
隐藏了强制类型转换
比较运算符
这些运算符:无论这些符号连接的表达式是简单的还是复杂,结果应该布尔类型,true/false
表达式:
这些运算符号--连接起来多个变量
注意:
==不能写成 =
数学表达式:
3<=x<=5,在计算机语言中,无法这样书写,需要逻辑符号连接起来
x>=3 &(逻辑单与) x <=5;
逻辑运算符
基本的逻辑运算符
逻辑单与& ----并列关系
特点:有false,则false;
逻辑单或| ----或的关系
特点:有true,则true
逻辑异或^
特点:
相同则为false,不同则为true
扩展的逻辑运算符
逻辑双与&& ---并列关系,必须同事满足条件,才成立;
逻辑双与&& ---并列关系,必须同事满足条件,才成立;
逻辑双或|| --- 或的关系:有一个满足条件 成立;
面试题:
逻辑双与&&和逻辑单与&的区别?
共同点:有false,则false
不同点:
逻辑双与&&:具有"短路"效果,
当&&连接的表达式如果左边为 false,则右边不执行了!
逻辑双或||
||连接的表达式左边true,右边不执行了(具有短路效果), 有true,则true
三元运算符
格式:
(简单或者复杂的表达式)? 执行成立的结果:执行不成立的结果;
执行流程:
1)先判断表达式是true还是false,如果是true,执行成立的结果;
2)如果是false,执行不成立的结果;
重点的运算符
进制:属于常量
进制的相互转换
算术的运算符里面++或者--的使用
赋值运算符的扩展符号的特点:+=...
逻辑运算符:逻辑双与&&和逻辑单与&的区别
键盘录入数据---让程序更灵活
没有提示数据类型,默认录入的都是int类型
Java中的键盘录入---Jdk提供的类:Scanner :它不能直接录入字符类型 char
需要让程序更灵活,jdk5以后提供了Scanner:键盘录入数据
Scanner的使用步骤---
先录入int数据举例
1)导包---以后经常用到jdk提供的类或者第三方(阿里支付宝支付/微信支付/ 短信验证...)的类
只要这个类不是java.lang包下的类,都需要导包;
只要将包导入进来,才能使用这个类
在class的上面使用import (关键字:导包)
import java.util.Scanner;
2)创建一个文件扫描器(创建键盘录入数据对象)
Scanner sc = new Scanner(System.in); //sc:就是代表文本扫描器对象(变 量名,可以随便起---见名知意)
3)友情提示,"请您输入一个数据:"
4)录入一个int类型的数据了
int 变量名 = sc.nextInt();//就是使用文本扫描器对象调用这个类的功能
(录入int类型)
nextInt():是Scanner这个类提供的一个功能
5)使用这个变量名完成一些操作,要么直接输出,要么逻辑判断....
流程控制语句
顺序结构---->所有的计算机语言都是遵循顺序结构:
代码依次从上而下加载(从程序入口:java中的main方法)
选择结构语句
if语句三种格式
if(表达式){
语句;
}
if(表达式){
语句1;
}else{
语句2;
}if(表达式1){
语句1;
}else if(表达式2){
语句2;
....
}else{
...
}
switch语句-----面试中问的最多的
循环结构语句(开发中使用最多的)
for循环
while循环
顺序结构语句
Java中的流程控制语句:三类
顺序结构语句:从进入到程序的入口之后,代码从上而下依次加载(最简单的一 种结构)
举例:
从main进来之后,直接去输出,依次输 出...
选择结构语句:
if语句-----开发中使用比较多的,尤其格式2:if...else..
switch语句
循环结构语句:
for
while
do-while
选择结构语句之if格式1
第一种格式
if(表达式){
语句;
}
第一种格式的执行流程
if(表达式){
语句;
}
选择结构语句if格式2
第二种格式
if(表达式){
语句1 ...;
}else{
语句2...;
}
执行流程:
1)首先判断表达式是否成立,如果成立,则执行语句1...
2)如果不成立,执行语句2...
选择结构语句if格式2和三元的区别
面试题
if...else...和三元运算符的区别?
区别:共同点:都是选择一个结果;(带有选择判断思想)
不同点:
1)格式不同
三元运算符---是一个运算符 ---应该要出来具体 的结果值 (表达式)?执行true的结果:执行false的结果
if...else...流程控制语句
if(表达式){
语句1; 这里面的语句可能是具体的
变量携带的结果或者是输出语句;
}else{
语句2;
}
2)范围不同
if...else...大于三元运算符:
三元运算符的能够实现,一定能够使用 if...else...实现
但是,if...else...不一定能够使用三元
选择结构语句之if格式3
第三种格式
if(表达式1){
语句1 ...;
}else if(表达式2){
语句2...;
...
}else{
语句n...;
}
执行流程:
1)先判断表达式1是否成立,成立,执行语句1
2)如果不成立,继续判断表达式2是否成立,成立,则执行语句2,,, ...... 如果上面的表达式都不成立,执行else中的语句n..