目录
一、Java历史
Java语言诞生于1990年年末Sun公司,本来准备嵌入式系统将来在未来家用电器领域大显身手,Sun公司成立了一个由James Gosling领导的“Green计划”,准备为下一代只能加点编写一个通用控制系统;Java语言前生是Oak语言,但是注册的时候发现被注册了,所以改名Java,Java的名字灵感来源于爪哇岛喝过一杯美味的咖啡
二、Java可以做什么?
Java语言目前是最流行的面向对象编程语言,Java语言可以开发:JavaWeb,JavaEE,Android
Java运行时环境(jre),以及常用的Java类库等。
- bin:存放JDK的各种工具命令,常用javac、java等命令就放在该路径下
- db:安装JavaDB的路径
- include:一些平台特定的头文件
- jre:运行Java程序所必需的JRE环境
- lib:存放JDK工具命令的实际执行程序
- javafx-src:存放JavaFX所有核心类库的源代码(目前我们不会接触到)
- src:存放Java所有核心类库的源代码
JRE:Java Runtime Environment,即Java运行时环境,是Java程序运行的必须条件
JVM:Java Virtual Machine,即Java虚拟机,和实际的计算机一样,它具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存和寄存器;JVM大致分:指令集、寄存器、类文件的格式、栈、垃圾回收堆和储存器
- JavaSE:Java Platform,Standard Edition(Java平台标准版)
- JavaEE: Java Platform,Enterprise Edition(Java平台企业版)
- JavaME: Java Platform,Mobile Edition(Java平台手机版)
三、Java开发环境配置
1、下载和安装JDK
下载:http://www.oracle.com/
配置Java环境变量
计算机右键属性,高级,环境变量,修改Path
是否配置成功:检测cmd命令行模式下,java,javac两个指令都能出命令提示
2、下载安装Eclipse
注意:JDK和Eclipse版本必须保持一致,即32位/64位
程序编写、编译、运行原理:
3、后缀名为.java的源文件经过编写后,经编译器编译,生成中间过程为.class的字节码文件,执行时经过JRE二次编译,生成能被机器直接执行的二进制执行文件,在JVM上运行出结果。
如果使用集成开发工具(Eclipse),可以不需要配置环境变量
开发工具是即时编译
四、常量,变量,数据类型
Java注释:
- 单行注释://注释内容
- 多行注释:/*注释内容*/
- 文档注释:/**注释内容*/
标识符规则:
标识符就是用于给程序中变量、类、方法名的符号
1)标识符可以由字母、数字、下划线(_)和美元符($)组成,其中数字不能开头
2)标识符不能是Java关键字和保留字,但可以包含关键字和保留字
3)标识符不能包含空格
4)标识符只能包含美元符($),不能包含@、#等其他特殊字符
5)只有类名首字母才能大写,其他首字母一律小写
6)坚决不允许出现中文及拼音
7)使用驼峰命名法
java中有50个关键字
变量概念:
编程的本质,就是对内存中数据的访问和修改,程序所用的数据都会保存在内存中,程序员需要一种机制来访问或修改内存中数据,这种机制就是变量,每个变量都代表了某一块内存,而且变量是有名字的,程序对变量赋值,实际上就是把数据装入该变量所代表的内存区的过程;程序读取变量的值,实际上就是从改变量所代表的内存区取值的过程。形象的理解:变量相当于一个有名称的容器,该容器用于装各种不同类型的数据
数据类型:
数据类型主要分两大类:基本数据类型和引用数据类型
引用数据类型:类、接口和数组等
引用数据类型:
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(7==6);//基本数据类型比较都用==
String a=new String("abc");
String b=new String("abc");
System.out.println(a==b);//String是引用数据类型
System.out.println(a.equals(b));//引用数据类型比较都用equals()
}
基本数据类型:
float和double区别:
float:精度6位,double:精度15位
转义字符:
基本数据类型的类型转换
1、自动转换
2、强制类型转换
public class Demo_4 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// Object obj=new Object();
System.out.println("请输入姓名、年龄、成绩和性别:");
String name = input.next();// 获得String值,方法返回的数据类型和定义数据类型保持一致
int age = input.nextInt();// 获得int值
double score = input.nextDouble();
char sex = input.next().charAt(0);// a 字符 aaa 字符串
System.out.println(name + " " + age + " " + sex + " " + score);
}
}
五、运算符(5种)和表达式
1)算数运算符
2)赋值运算符
3)比较运算符
4)逻辑运算符
5)位运算符(只需要知道)
算数运算符
System.out.println(9.6%4.5);//0.6
//9.6被4.5整除 4.5*2=9.0 9.6-9.0=0.6 被整除后剩余的数(余数)
int i = 4;
// System.out.println(i--);// i = 4
// System.out.println(i);
System.out.println(++i);// i = 5
System.out.println(i);
赋值运算符
比较运算符

三目运算符
是一个简易的if-else(见if-else)的精简写法,三目运算符:?:,格式如下:
(expression)?if-true-statement:if-false-statement;
例题:A字符对应65十进制,a字符对应97十进制,B字符对应66十进制,b字符对应98十进制
// 1、大写 2、小写 3、非字母(不我们要的值)
Scanner input = new Scanner(System.in);
System.out.println("请输入字母:");
char c = input.next().charAt(0);
if (c >= 'A' && c <= 'Z') {
c += 32;
} else if (c >= 'a' && c <= 'z') {
c -= 32;
} else {
System.out.println("不是字母!");
return;
}
System.out.println("最终:" + c);
例题:根据用户输入的成绩区分等级,100-90:A,90-80:B,80-70:C,70-60:D,小于60:E
double score = 0;// 成绩
char level = 0;// 等级
Scanner input = new Scanner(System.in);
System.out.println("请输入成绩:");
score = input.nextDouble();// 成绩:0-100
// 问题1:不在正常的成绩范围
if (score > 100 || score < 0) {// 判断输入的值是0-100以外的数
System.out.println("成绩是0-100之间的数!");
return;
}
// 能执行到这里,说明是符合要求的值
// 问题2:条件冗余
if (score >= 90) {// 条件之间是互斥
// 问题3:代码块重复
// System.out.println("A");// 输出
level = 'A';
} else if (score >= 80) {
// System.out.println("B");// 输出
level = 'B';
} else if (score >= 70) {
// System.out.println("C");// 输出
level = 'C';
} else if (score >= 60) {
// System.out.println("D");// 输出
level = 'D';
} else {
// System.out.println("E");// 输出
level = 'E';
}
System.out.println("等级:" + level);// 一次或多次判断,一次输出
六、switch-case语句
switch-case语句由一个控制表达式和多个case标签组成,switch-case语句后面的控制表达式的数据类型只能是byte、short、char、int四种整数类型,枚举类型和String(java.lang)类型(从Java7)
例题:根据用户输入的月份判断并显示相应的季节,1-3:春,4-6:夏,7-9:秋,10-12:冬
int month = 4;// 月份
char season = 0;// 季节
Scanner input = new Scanner(System.in);
System.out.println("请输入月份:");
month = input.nextInt();
switch (month) {// key放变量名
case 1:
// System.out.println(1);
case 2:
// System.out.println(2);
case 3:
season = '春';
break;// 当case执行代码是一样可以只写在最后一个case中
case 4:
// break;// 一般情况不能不写break
case 5:
case 6:
season = '夏';
break;
case 7:
case 8:
case 9:
season = '秋';
break;
case 10:
case 11:
case 12:
season = '冬';
break;
default:// 和else功能一样,以上都不符合情况执行代码
System.out.println("月份有误!");
return;//一般是break,但是特殊情况也能改
}
System.out.println(month + "月是" + season + "天");
例题:简单的游戏判断
// 在这个区域的变量,称为成员变量(第三阶段会详细讲解)
public static void main(String[] args) {
// TODO Auto-generated method stub
// 局部变量
int num = 0;// 随机数
int userNum = 0;// 猜数
int op = 0;// 选项
String name = null;// 用户名
Scanner input = new Scanner(System.in);// 扫描器
System.out.println("欢迎来到游戏乐园");
System.out.println("请问英雄出处:(大名)");
name = input.next();
// next(推荐使用):获得空格、回车或tab之前的有效值
// nextLine:获得包括空格等一行的值
System.out.println("请" + name + "进入游戏...");
System.out.println("1、开始游戏");
System.out.println("2、查看排行榜");
System.out.println("0、退出");
op = input.nextInt();
switch (op) {
case 1:
System.out.println("正在进入战场......");
System.out.println("敌军正在逼近,请猜测人数:");
// 随机生成一个数字
num = 9;// 随机数(伪随机数)
userNum = input.nextInt();
if (num != userNum) {
System.out.println("估算错误!");
return;
}
System.out.println("正确,对敌军进行有效打击!");
break;
case 2:
System.out.println("最新排行榜正在生成...");
break;
case 0:
System.out.println("正在撤离战场......\n静待" + name + "再次归来!");
System.exit(0);// 退出程序
break;
default:
System.out.println("输入有误!");
break;
}
}