一、输出
- 专业属于
- JDK:java development kit java开发工具包
- JRE:java runtime environment 运行环境,包含Jvm,类库,接口
- JVM:java virtual Machine 虚拟机(,模拟计算机),与把不同的系统cpu进行交流
-
- 注:安装的JDK中包含JRE,JRE中包含JVM
- 历史
- 1995年sun公司创立
- 2009年oracle(甲骨文)公司收购
- java之父:詹姆斯-构思林
- java代码的运行过程
- 编译阶段:
- java程序员编写.java文件源码
- javac.exe 编译生成calss文件
2.运行过程
1.java.exe装载字节码文件到Jvm
2.Jvm解释器解释成01二进制代码
3.交给系统Cpu处理,控制硬件
- JDK安装:oracle官网 developer.oracle.com/
- 配置环境变量
- 用户变量与系统变量的区别
系统用户控制的范围: 整个系统中所有用户都可以使用
用户变量控制的范围:只有改用户可以使用
二、输入(数据类型与变量)
- 专业属于
1.标识符:程序员可以自己决定的名字,有特殊含义的符号
规则:首字母:英文字母、、下划线、数字
2.关键字:提前定义好的具有特殊含义的单词
3.保留字:暂时不用的关键字
4.字面量:固定不变的量,数据/数值
变量;存储字面量的标识符
- 数据类型
-
数据类型表 | 数据类型 | 字节数 | 取值范围 | | --- | --- | --- | | byte | 1 | -128
127 | | short | 2 | -3276832767 | | int | 4 | -21474836482147483647 | | long | 8 | -2^632^63-1 | | flaot | 4 | -2^312^31-1 | | double | 8 | -2^632^63-1 | | boolean | 1 | true/false | | char | 2 | [0,2^16-1] /0~65535| -
字节转化
1byte = 8bit位
1字节 = 1byte
1kb = 1024字节
1mb = 1024kb
1gb = 1024mb
- 整型 byte、 short、int 、long
byte = 128;
//报错:不兼容类型,int转byte可能会有损失
long L = 2147483648
// 报错: 过大的整数2147483648
- 重要结论 1.整型字面量在java中数据类型都是int
2.byte、short、char赋值没有超过取值范围可以直接赋值
3.开发时整型一般用int类型
4.使用long类型的时候后面加L
- 数据类型转化
1.强制数据类型转化:大容量转小容量,大容量前面添加需要转化的数据类型
2.自动数类型转化:小容量数据转化成大容量数据
- 浮点型float、double
1.所有浮点型字面量默认为double类型
2.如果要使用float 需要在数据类型中添加F
3.所有浮点类型都是近似值(有无限循环小数的存在)
- 字符型char
- 只能存一个字符,但是转义字符除外
- char可以赋值整型数据,找ASCll解码
- ascll码:美国标准信息交换代码,a--> 97 A-->65
- 字符编码集:一张映射表 解码:10101010-->A 解码:A-->10101010
- 常见的编码:GBK:中文简码 Big5:繁体字 Unicode 国际编码 (utf-8、utf-16、utf-)
- Boolean类型不可以转化为其他类型数据,强制转化也不行
- byte short char 混合运算的时候,会将各自数据类型转换为int类型运算,得到的结果是int类型
- 各种数据类型混合运算的时候,会将各自数据转换成最大容量的数据类型进行运算,结果就是最大容量数据类型
- 逻辑运算符
- 语法: 表达式 逻辑运算符 表达式 表达式的结果必须为boolean类型
- 短路:
&& 前面表达式结果是false,后面表达式不执行(两真则真,一假则假);
|| 前面结果为true 后面表达式不执行(一真则真,两假则假)
! --> 取反- 普通逻辑运算符 & | ! 不管前面表达式是false还是true,后面表达式都执行
- 运算符的优先级:()>算术运算符>比较运算符(为什么我老是记不住这个~)>逻辑运算符>赋值运算符
- 输入类Scanner,使用步骤
- 导入整个类,import java.util。Scanner;
- 实例化对象, Scanner mys = new Scanner(System.in);
- 提示用户输入数据
- 接受用户输入的数据 ,mys.next();
- 基本数据类型已经引用中的String,怎么使用Scanner输入
Scanner mys = new Scanner(System.in);
int n = mys.nextInt(); //整型int
double d = mys.nextDouble(); //双精度,double
float f = mys.nextFloat(); // 浮点float
// char 这个有点特别,char c = mys.next().charAt(0);就用下面的例子解释一下
char c = mys.next().charAt(0);
int a = 10,b = 20;
switch(c){
case '+':
System.out.println(a + b);
break;
case '-':
System.out.println(a - b);
break;
default:
break;
}
- 控制语句:改变代码执行的顺序
1.if 分支语句 单if结构,语法:表达式必须为Boolean类型
2.if(表达式){表达式结果为true,执行这里的代码块} else {表达式为false 执行这里的代码块} ,其他if else if else ; if ,if else 嵌套的代码执行语法都类似
3.特点:if else if 结构中只会执行一个else if 里面的代码块,一旦执行了一个,后面的代码块就不执行了; if...else if 与单if结构的区别,单if每个都会判断,if..else if 结构只能一个
- switch 分支语句
switch (变量) {
case 值1 :
//如果变量是值1,执行这里的代码块
break;
case 值2:
break;
.
.
.
default:
//变量值不满足以上任何一个情况,执行这里的代码块
break;
}
特点:
- 变量接收类型,需要int、string,chars、hort、byte会发生自动类型转换为int
- break 是用来打断当前case结构,如果不加会一直穿透下去,知道遇到break;
- 多个case可以合并,多个case执行的结构都相同可以合并 4.default 是上面的case都不满足的情况下,执行default里面的代码
- for循环语句:封装重复的代码块,少量代码达到重复执行的效果,提高开发效率
//for循环中的结构
int i=0; 初始值
i<100 判断条件
i++ 计数器
for(int i=0;i<100;i++) {
//循环体
}
- while ,do...while
1.while 先判断再执行
2.do...while 先执行再判断,至少执行一次,while后面要由 ;
- 转向语句
return : 两个作用,退出当前循环;返回值;
break; 停止循环
continue;停止当前循环,continue之后的代码都不执行,重新开始下一个循环
- 三元(目)运算符(补充)
语法:表达式1?表达式2:表达式3 原理:表达式1结果必须是Boolean类型true/false
表达式1 为true 返回表示是2的结果
表达式1 为false 返回表示是3的结果
表达式2和表达式3的数据类型必须是一致,可以为任意数据类型