一、输出
-
专业属于
-
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官网 Oracle for Developers | Programming Languages, Tools, Community
-
配置环境变量
-
用户变量与系统变量的区别
系统用户控制的范围: 整个系统中所有用户都可以使用 用户变量控制的范围:只有改用户可以使用
二、输入(数据类型与变量)
-
专业属于
1.标识符:程序员可以自己决定的名字,有特殊含义的符号 规则:首字母:英文字母、、下划线<b**r>非首字母:英文字母、、下划线、数字 2.关键字:提前定义好的具有特殊含义的单词 3.保留字:暂时不用的关键字 4.字面量:固定不变的量,数据/数值 变量;存储字面量的标识符
-
数据类型
-
数据类型表
数据类型 字节数 取值范围 byte 1 -128~127 short 2 -32768~32767 int 4 -2147483648~2147483647 long 8 -2^63~2^63-1 flaot 4 -2^31~2^31-1 double 8 -2^63~2^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的数据类型必须是一致,可以为任意数据类型