1.计算机语言发展史
1.第一代机器语言,即二进制01等,只能用来解决简单的计算,过于复杂的问题很难写出代码
2.第二代汇编语言,仍然略显繁琐,现在操作工业机器人、单片机编程、甚至某些计算机病毒的 编写还在使用
3.第三代语言很多。例如:C语言、Fortran、cobol、pascal、ada、c++、java、c#。
共分为两大类,面向对象和面向过程的。
2.java语言的优势和特性
- 可移植性(跨平台性)JAVA代码或者说字节码、二进制码可以跨平台的移植,而不用管具体 的操作系统和硬件环境。“一次编写,随处运行”:“write once, run anywhere”
- 高性能 JIT(JUST IN TIME)即时编译。将一些“热点”字节码编译成本地机器码,并将结果缓存起来,在需要的时候重新调用。这样的话,使JAVA程序的执行效率大大提高,某些代码甚至接近c++的效率。随着这种技术的一天天完善,也许有一天会超越编译代码的效率。
- 分布式
- 动态性
- 多线程
- 安全性
3.java三大版本
JAVA SE:java标准版,java的基础和核心
JAVA ME:嵌入式开发,应用较少
JAVA EE:java企业版,偏向网站开发
4.JDK和JRE
JDK:Java Development Kit java开发者工具 百度下载JDK1.8版本安装
JRE:Java Runtime Environment java运行时环境
JRE包含:Java虚拟机、库函数、运行Java应用程序和Applet所必须文件
Java运行环境的三项主要功能:
加载代码:由class loader 完成;
校验代码:由bytecode verifier 完成;
执行代码:由 runtime interpreter完成。
5.安装java开发环境
1.下载JDK1.8
2.安装JDK并记住安装地址
3.配置环境变量
右键计算机 选择属性 选择高级系统设置 选择环境变量 在系统变量中创建JAVA_HOME输入JDK安装地址 选择path 在最后面输入%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin.;
4.测试是否安装成功
window+R输入cmd 输入java -version,显示java版本,则安装成功
6.Hello World!
新建文本文档,重命名Hello.java 打开输入
注意 所有标点都是英文
保存 win+r 输入cmd 输入javac Hello.java将文件编译为Hello.class
输入java Hello 得到输出结果“Hello,World!”
7.IDE集成开发环境
记事本写代码非常繁琐,我们需要一种只能的工具,目前常用的IDE工具是IDEA,JetBrains公司的产品
打开JetBrains公司的官网有IDEA的社区版(免费但功能少)和旗舰版(收费但功能多)
8.注释
在大量的编码中,我们需要注释
1.单行注释 //加注释
2.多行注释 /*
/
3.文本注释/
**/
9.标识符
1.文件名“HelloWorld”也叫类名
2.关键词如“public class”等
java中所有的组成部分都需要名字。类名、变量名和方法名都被成为标识符
起名要求
1.所有类名的标识符用大写字母开始
2.所有表示方法和变量的标识符都以小写字母开始,后面单词首字母大写
所有的表示符要求
1.所有的标识符都以大小写的字母或美元符(
)
或
下
划
线
(
)
开
始
2.
首
字
母
之
后
可
以
是
大
小
写
的
字
母
或
美
元
符
(
)或下划线(_) 开始 2.首字母之后可以是大小写的字母或美元符(
)或下划线()开始2.首字母之后可以是大小写的字母或美元符()或下划线(_)或数字的任何组合
3.不能使用关键字作为变量名或方法名
4.标识符的大小写是敏感的
JAVA不采用通常语言使用的ASCII字符集,而是采用unicode这样的标准的国际字符集。因此,这里的字母的含义:可以表示英文、汉字等等。
10.java的数据类型
赋值float数据类型时要在赋的值后加上大写或者小写的f
赋值long数据类型时要在赋旳值后加上L(小写l容易与1搞混,不推荐)
11.整形拓展 进制
十进制整数,如:99, -500, 0。
八进制整数,要求以 0 开头,如:015。
十六进制数,要求 0x 或 0X 开头,如:0x15 。
演示:
12.浮点类型拓展
0.3的无限循环*3=0.9的无限循环
(1/3)乘以3=1
0.3的无限循环=1/3
0.9的无限循环不等于1
由于字长有限,浮点数能够精确表示的数是有限的,因而也是离散的。浮点数一般都存在舍入误差,很多数字无法精确表示,其结果只能是接近,但不等于;二进制浮点数不能精确的表示0.1,0.01,0.001这样10的负次幂。并不是所有的小数都能可以精确的用二进制浮点数表示。
浮点类型float, double的数据不适合在不容许舍入误差的金融计算领域。
如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。
大数值:Java.math下面的两个有用的类:BigInteger和BigDecimal,这两个类可以处理任意长度的数值。BigInteger实现了任意精度的整数运算。BigDecimal实现了任意精度的浮点运算。
13.类型转换
由于Java是强类型语言,所以要进行有些运算的时候的,需要用到类型转换。
整型、实型(常量)、字符型数据可以混合运算。
运算中,不同类型的数据先转化为同一类型,然后进行运算。
转换从低级(低容量)到高级(高容量)
低 ------------------------------------> 高
byte,short,char—> int —> long—> float —> double
转换规则
- 不能对boolean类型进行转换
- 不能把对象类型转换为不相关类的对象
- 高级转低级时使用强制转换
- 转换过程中可能会溢出或损失精度
- 如int i =128;
byte b = (byte)i;//正确b=128,实际b=-128 - 浮点数转整数直接抹去小数,而不是四舍五入
jik新特性 数字的下划线分割
1_2345=1万2345
14.运算符号
Java 语言支持如下运算符:
算术运算符: +,-,*,/,%,++,--(加减乘除,取余,自增自减)
赋值运算符 =
关系运算符: >,<,>=,<=,==,!= instanceof
逻辑运算符: &&,||,!(是,或,非)
位运算符: &,|,^,~ , >>,<<(int a=2<<3,a==2乘2的三次方==16),>>> (了解!!!)
条件运算符 ?:
扩展赋值运算符:+=,-=,*=,/=
整数运算
如果两个操作数有一个为Long, 则结果也为long
没有long时,结果为int。即使操作数全为shot,byte,结果也是int.
浮点运算
如果两个操作数有一个为double, 则结果为double.
只有两个操作数都是float, 则结果才为float.
15.package包机制
为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。
包的作用:
1、把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。
2、如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。
3、包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。
为了使用某些包中本包里没有的类,就需要导入那个包,用import导入
16.用户交互Scanner
之前我们学的基本语法中我们并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类,我们可以获取用户的输入。java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。
下面是创建 Scanner 对象的基本语法:
Scanner s = new Scanner(System.in);
17.选择结构
1.if选择结构
if(布尔表达式 1){
//如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){
//如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){
//如果布尔表达式 3的值为true执行代码
}else {
//如果以上布尔表达式都不为true执行代码
}
if 语句至多有 1 个 else 语句,else 语句在所有的 else if 语句之后。
一旦其中一个 else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行。
2.switch选择结构
public static void main(String args[]){
int i = 1;
switch(i){
case 0:
System.out.println(“0”);
case 1:
System.out.println(“1”);
case 2:
System.out.println(“2”);
case 3:
System.out.println(“3”);
break;
default:
System.out.println(“default”);
}
}
i=0输出0 1 2 3
i=3输出3
i>3输出default
18.循环结构
- while循环
while(判断条件){
//循环执行的程序
}
条件一直满足就会一直循环造成死机崩溃,应当避免 - do…while循环
do{
//循环执行的程序
}while(判断的条件)
即使条件不满足也会执行一次
3.for循环(重点)
for(初始环境;循环条件;更新的变量){
//执行的循环程序
}
初始环境可为一个或多个
循环条件判断满足,则更新变量,执行循环程序;否则进入下一个环节
【演示:while和for输出】
public static void main(String[] args) {
int a = 1; //初始化
while(a<=100){ //条件判断
System.out.println(a); //循环体
a+=2; //迭代
}
System.out.println("while循环结束!");
for(int i = 1;i<=100;i++){ //初始化//条件判断 //迭代
System.out.println(i); //循环体
}
System.out.println("while循环结束!");
}
我们发现,for循环在知道循环次数的情况下,简化了代码,提高了可读性。我们平时用到的最多的也是我们的for循环!
- 练习
1九九乘法表
//1.进行9次循环,执行9次换行输出 2.赋以变量a的值
for (int a = 1; a <= 9; a++) {
//1.赋以变量b的值 2.执行输出程序b*a=b*a满足条件次数 3.\t:没执行一次空三格
for (int b = 1; b <= a; b++) {
System.out.print(b + "*" + a + "=" + a * b + "\t");
}
System.out.println();
}
2.排列为4*6的矩形0
//循环执行4次换行输出
for (int a = 1; a <= 4; a++) {
//每一行输出6个0
for (int b = 1; b <= 6; b++) {
System.out.print(0);
}
System.out.println();
}
3.排列为4*4的平行四边形0
//执行4次换行输出
for(int a=1;a<=4;a++){
//每行开始输出符合条件次数个空格
for(int b=4;b>a;b--){
System.out.print(" ");
}
//每行接着输出4个0
for(int c=1;c<=4;c++){
System.out.print("0");
}
System.out.println();
}
4.排列为上1下7共4行的等腰三角形的*
首先确定思路,第一步输出“1”处的空白部分,第二步输出“2”处的“*”,第三步输出“3”处的“ * ”
//1.赋以变量a的值 2.执行4次换行输出
for(int a=1;a<=4;a++){
//每一行输出符合条件次数个空格
for(int b=4;b>a;b--){
System.out.print(" ");
}
//每一行输出符合条件次数个“*”
for(int c=1;c<=a;c++){
System.out.print("*");
}
//每一行输出符合条件次数个“*“
for(int d=1;d<a;d++){
System.out.print("*");
}
System.out.println();
}
break & continue
break结束整个循环
continue打断当前循环