JAVA语言概述
什么是Java语言
Java语言是美国Sun公司(StanfordUniversityNetwork),在1995年推出的高级的编程语言。所谓编程语言,是计算机的语言,人们可以使用编程语言对计算机下达命令,让计算机完成人们需要的功能。
Java语言能做什么
Java语言主要应用在互联网程序的开发领域。常见的互联网程序比如天猫、京东、物流系统、网银系统等,以及服务器后台处理大数据的存储、查询、数据挖掘等也有很多应用。
Java语言平台版本
- J2SE(Java 2 Platform Standard Edition)标准版是为开发普通桌面和商务应用程序提供的解决方案,该技术体系是其他两者的基础,可以完成一些桌面应用程序的开发。
- J2ME(Java 2 Platform Micro Edition)小型版是为开发电子消费产品和嵌入式设备提供的解决方案。
- J2EE(Java 2 Platform Enterprise Edition)企业版是为开发企业环境下的应用程序提供的一套解决方案。该技术体系中包含的技术如 Servlet、Jsp等,主要针对于Web应用程序开发。
注:Java5.0版本后,更名为 JAVAEE JAVASE JAVAME
Java虚拟机——JVM
JVM(Java Virtual Machine): Java虚拟机,简称JVM,是运行所有Java程序的假想计算机,是Java程序的运行环境,是Java最具吸引力的特性之一。我们编写的Java代码,都运行在JVM上。
跨平台:任何软件的运行,都必须要运行在操作系统之上,而我们用Java编写的软件可以运行在任何的操作系统上,这个特性称为Java语言的跨平台特性。该特性是由JVM实现的,我们编写的程序运行在JVM上,而JVM 运行在操作系统上。
JRE和JDK
JRE(Java Runtime Environment):是Java程序的运行时环境,包含JVM和运行时所需要的核心类库。
JDK(Java Development Kit):是Java程序开发工具包,包含JRE和开发人员使用的工具。我们想要运行一个已有的Java程序,那么只需安装JRE即可。我们想要开发一个全新的Java程序,那么必须安装JDK。
人机交互
方式1:图形界面化方式. 非常简单方便,直观!
方式2:命令行的方式:
得记住相关的操作指令 (计算机能够识别的),需要进入dos控制台,输入相关的指令。
1)最快捷的方式:windows键+R键---->输入cmd ,进入dos系统
2)切换盘符:从系统盘切换到d盘---->d:(不区分大小写)
3)查看当前盘符下的所有的文件夹以及文件的名称---->dir:罗列
4)进入到某个目录下---->输入cd 目录名称(文件夹名称)
5)一次进入一个单级目录---->cd 目录名称
6)创建目录---->md 目录名称
7)回退到根目录---->cd \
8)回退上一级目录---->cd …
9)创建文件: copy con 输入文件名称(xx.txt) 输入回车,输入文件内容,输入完毕ctrl+z(终止文件内容输入),回车提示已复制。
10)删除文件:del删除单个文件,或者批量删除 删除所有带.txt后缀的文件
D:\aaa>del aa.txt
D:\aaa>del *.txt
D:\aaa>
11)删除目录(文件夹): rd(remove directory) 目录(文件夹)名称 (只能删除空目录)
12)删除目录:存在一些扩展命令:
rd /s 目录(文件夹)名称:询问是否删除这个目录? (询问删除)
rd /s /q 目录(文件夹)名称:暴力删除(不询问删除,直接删除)
13)查看ip端口 :ipconfig Linux系统:ifconfig
ping 跟上某个ip地址 : 查看网络之间通信
14)清屏: cls(clear screen)
path环境变量配置方式
两种方式:
方式1: 需要找jdk安装目录的bin目录中:
D:\dvelop_soft\Java\jdk1.8.0_162\bin
方式2:(推荐的)
系统变量----> 新建一个变量名:JAVA_HOME
变量值:D:\dvelop_soft\Java\jdk1.8.0_162
path:%JAVA_HOME%\bin
针对JAVA文件进行编译和运行
第一步:你在某个盘符的某个目录中写好了java文件(当前目录中)
第二步:编译过程
javac Hello.java ---- >找到了这个文件进行编译-------------->Hello.class
如果当前目录下没有这个文件------>才会在你配置的path环境变量中寻找 D:\dvelop_soft\Java\jdk1.8.0_162\bin,是否存在这个文件,如果不存在,直接报错了,找不到就报错了!
第三步:运行过程
java Hello---->直接运行即可!
HelloWorld案例中存在的一些问题
1.创建的一个java文件---->最终是一个.txt(原因就是将文件的扩展名没有显示出来)
2.书写程序的入口:public static void main(String[] args){}
main------>mian… 格式错误
3.输出语句:System.out.println(“hello”),没有带"分号" ;
4.输出语句:system, System
5:大括号的问题:注意:类{} main方法(String[] args){}
Java语言:是一种强类型语言
javascript:前端的(js):弱类型语言
Java中的关键字
关键字是被赋予特定含义的单词,全部小写。
比如常见的有(class、public、static、void等)。
Java中的标识符
标识符:给类,变量等起名字的字符序列。(要见名知意)
组成规则:(1)英文大小写字母(2)数字字符(3)$和下划线组成_
注意事项:(1)不能以数字开头(2)不能是Java中的关键字(3)严格区分大小
变量的概念
变量:在程序的执行过程中,其值发生的改变的量。
变量的三要素:
(1)对当前变量进行限定(数据类型);
(2)给空间定义一个变量名;
(3)还需要存在一个初始化值。
Java语言数据类型的划分:
基本数据类型(四类八种):
整数类型:字节类型:byte
短整型:short
整数默认类型:int
长整型:long
浮点类型:float(单精度)、double(双精度)
字符类型:char类型
布尔类型:boolean类型(true/false)
**引用数据类型:**数组、类(具体类、抽象类)、接口。
Java中的类型转换
1.Java存在默认类型提升(基本数据类型),也叫隐式类型转换:
byte、short、char三者不会相互转换,一旦这三个中的某一个类型参与运算,先转到int类型,在转到double类型,如:
int x = 3;
byte y = 4;
int c = x+y;
结果c = 7
2.Java存在强制类型转换(显示类型转换):
语法格式:目标数据类型 变量名 = (目标数据类型)(变量值);
int a = 3;
byte b = 4;
byte result = (byte)(a+b);
适用范围:基本数据类型和引用类型
提示:不要随便使用,会损失数据精度,能不强制转换就不用。
面试题:检验下列编译会不会报错,如果会,该怎样解决?
byte b ,b1 = 3,b2 = 4;
b = b1+b2;
b = 3+4;
第二,句会报错,因为会发生强制类型转换,转换成int类型,应改为:
b = (byte)(b1+b2);
逻辑单与&(单或|)和逻辑双与&&(双或||)的区别
共同点:都是有false则false;
不同点:逻辑双与&&存在短路效果,当连接的表达式左边如果结果为false,右边的表达式则不执行。
逻辑双或||与逻辑双与&&正好相反。
++/–不同意义
当++/–单独使用时,直接自增或自减;
当++/–在前时先自增或自减然后再参与运算,++/–在后时先参与运算然后在自增或自减。
例如:
a = 2;
b = ++a;
//输出结果为:a = 3;b = 3
a = 2;
b = a++;
//输出结果为:a = 3;b=2
a = 2;
b = --a;
//输出结果为:a = 1;b=1
a = 2;
b = a--;
//输出结果为:a = 1;b=2
位运算符中相关的移动符号
<<:左移,将最高符号位舍弃掉,在右边补齐0
>>:右移符号: 如果最高符合为如果是0,在左边补齐0;最高符号位如果是1,左边补齐1
>>>:无符号右移:无论最高符号为是0还是1,始终在左边补齐0
计算2 << 3从而得出左移符号有一个结论:将该符号左边的数据本身乘以2的移动次幂 : 3 * 2 ^2 = 3 *4 = 12
计算24 >> 2从而得出右移符号有一个结论:将该符号左边的数据本身除以2的移动次幂: 24 / 2^2 = 24 / 4 = 6
三元运算符(三目运算符)
格式:(表达式)?执行true的结果:执行false的结果;
int a = 100;
int b = 200;
int max = (a>b)?a:b;
System.out.println("两个数据的最大值是:"+max);
//输出:两个数据的最大值时:200
键盘录入数据
为了程序的灵活性,引入Scanner类:文本扫描器
1)导包,在Java中只要不是java.lang包下的类都需要导包
位置在class上面,格式:import java.util.Scanner;(用哪个类就导哪个类)
2)固定格式:创建一个文件扫描器对象
Scanner 对象名 = new Scanner(System.in);
3)友情提示:“请您输入一个整数数据:”
4)接收数据:
int 变量名 = 对象名.nextInt();
5)输出变量名即可。
Java中的流程控制语句
顺序结构语句
选择结构语句
(1)if语句
(2)switch语句(重点)
循环结构语句
(1)for循环
(2)while循环
(3)do-while循环
跳转控制语句
break
continue
return:----->都结合"方法"去使用
选择结构语句之if语句注意事项
1)有左大括号{的地方不能有分号,有分号的地方不能有左大括号{;
2)if语句中如果是单个语句,{}可以省略,但不建议!
3){}表示一个作用域,定义变量需要在{}这个作用域范围内使用。
switch语句使用的注意事项
1)default语句是可以放在语句中的任何位置,不影响执行流程,(建议default语句使用时放在末尾)。
2)switch语句的结束条件:遇见break结束或者程序默认执行到末尾。
3)case语句后面的值只能是常量,不能是变量(Java是强类型语言)。
面试题:switch后面表达式可以是什么样的数据类型?
一般情况:可以是byte、short、char、int类型的;
JDK5以后可以跟枚举(enum)类型的(引用数据类型);
JDK7以后可以跟String类型的。
水仙花数
指的是三位数,特点是三位数上每个位数据的立方和是它本身。
int x = 100 ;
while(x<1000){
//获取每个位上到数据
int ge = x % 10 ;
int shi = x /10 % 10 ;
int bai = x /10 /10 % 10 ;
//满足的条件
if(x == (ge*ge*ge + shi*shi*shi+bai*bai*bai)){
System.out.println(x) ;
}
//x++ 步长语句
x ++ ;
}
结果:153 370 371 407
while循环和for循环的区别?
1)两种循环格式不一样
while循环---->从内存角度考虑,while循环结束了,依然可以访问循环中的变量(消耗内存空间)。
for循环----->从内存角度考虑,for循环结束了,不能访问变量(变量生命周期随着for循环的结束而结束),比较省内存空间。
2)从应用场景来说:
一般情况:如果明确循环次数或者明确循环的范围,优先考虑使用for循环。
举例:给3次机会,模拟用户登录… 可以使用for循环
如果不明确循环次数或者不明确的范围,使用while循环操作
举例: 猜数字游戏,(产生的随机和用户录入的数据进行比较)---->这种情况:使用while循环操作