第一章 Java概述
一、计算机语言
- 机器语言
- 汇编语言
- 高级语言
二、跨平台原理
Java可以在一处开发到处运行,即在一类操作系统上开发的程序,可以在任何操作系统上运行。
不同的操作系统有不同的JVM,java是运行在JVM上,从而实现了跨平台。
- JVM:Java虚拟机
- JRE:Java运行时环境=JVM+核心类库
- JDK:Java开发工具集=JRE+开发工具
- 三者关系:JDK包含JRE,JRE包含JVM
三、JDK安装与配置环境变量
安装时建议不要单独再安装公共jre。
配置环境变量:
- 目的:更方便的在任意目录下使用开发工具
- 电脑-》右键属性-》高级-》系统环境变量-》新建变量名JAVA_HOME,变量值java安装目录-》编辑path变量,添加变量值:%JAVA_HOME%\bin;
四、入门程序
- 开发程序的步骤
- 编写源代码
- 使用javac命令编译源代码,产生对应的.class字节码文件
- 使用java命令运行字节码文件,产生结果
- 注意事项:
- 源码中使用的字符,严格区分大小写,
- 必须是英文状态下的标点符号等
- 括号必须成对出现
- 创建类时,建议使用public修饰符,如果有public,类名必须与文件名一致
- 可以创建多个类,只能有一个public的
- 编码要一致
第二章 基础语法
一、注释
给程序员开的说明性文字
- 单行注释 //注释内容
- 多行注释 /*注释内容 */
- 文档注释 /**注释内容 */
二、关键字
Java赋予了特殊含义的字符序列(单词),比如:public class static void
保留字:const ,goto
特殊值:true ,false,null
三、标识符
用于给类,方法,变量等起名字的字符序列。
- 命名规则:必须遵守的
- 由英文字母、数组、下划线_,美元符号组成
- 不能是数字开头
- 不能使用关键字
- 严格区分大小写
- 建议遵守的命名规范:
- 见名知意
- 类名,接口名:大驼峰发则 XxxYyy
- 方法名,变量名:小驼峰 xxxYyy
- 包名:全小写 com.atguigu.test
- 常量名:全大写 ,多个单词下划线隔开。 MAX_VALUE
四、常量
程序运行过程中,其值不可改变的量
-
字面量。比如:字符串"hello",整数100,浮点数12.3,布尔值true或false,字符‘a’,空值null
-
自定义常量,使用关键字final
final double PI = 3.1415926
五、变量
程序运行过程中,其值可以改变的量
-
声明格式
数据类型 变量名; 示例:int age;
-
初始化值
开辟内存空间并给赋值,示例:age=18;
-
声明并初始化
格式:数据类型 变量名 = 初始值;
示例:int age = 18;
示例:int a=1,b=2,c=3;
六、二进制存储
二进制存储数据
-
整数的存储,底层按照补码形式存储
- 原码:最高位是符号位,0是正,1是负数,其他为数值位。
- 反码:原码基础上,符号位不变,数值位按位取反,0变1,1变0
- 补码:反码基础上加1
正数的原码,反码,补码都相同,负数按照以上规则得出。
-
小数的存储
- java浮点数无法精确存储小数
- 同样字节大小的存储小数的范围远大于存储整数的范围
-
字符的存储
编码表:每个字符都有唯一对应的二进制数值
ASCII码表:英文字符,其他编码表都向下兼容此编码方式
GBK:中国编码表
Unicode的:万国码,统一码,Java本身支持的编码表
UTF-8:编码方式
七、数据类型
1.分类
-
基本数据类型
- 整数
- byte 1 -128~127
- short 2
- int 4
- long 8
- 浮点数
- float 4
- double 8
- 字符型 2 0~65535
- 布尔型 1 true/false
-
引用数据类型
String,数组,类,接口等
2.类型转换
基本数据类型中,七种数值类型(除布尔类型外)可以相互转换类型。
byte、short、int、long、double、float、boolean
-
自动转换:数值范围小的类型转为数值范围大的类型
- 多个类型混合运算,自动提升为最大的类型
- byte,short,char之间进行运算,全部提升为int
-
强制转换:数值范围大的类型转为数值范围小的类型,容易损失精度
-
可以强制提升某个类型
int a=1,b=2;
double c=(double)a/b;
八、运算符
-
算数运算符
加+ 减- 乘* 除/ 取余% 自增++ 自减–
自增++,自减–
-
单独使用时,前置后置效果一样
int a=10;
a++;//自增1
++a;//自增1
System.out.println(a);
-
复合使用时
-
赋值运算符
= += -= *= /= %=
byte a = 10;
a += 10;//可以,相当于a=a+10;
a = a + 10;//编译不通过
-
关系运算符
结果一定是布尔类型
< > <= >= == !=
-
逻辑运算符
操作数都是布尔类型的,结果也是布尔类型
逻辑与& :两边都为真,才为真
逻辑或|:一边为真,就为真
逻辑非!:取反
异或^, :两边相同为假,两边不同为真。
短路与&&,:同单与
短路或||:同单或
为什么推荐使用短路与、短路或?
短路与,短路或,当通过操作符左边的表达式结果,可以直接判断出最终结果时,右边不再执行,效率高。
-
条件运算符(三目运算符)
格式:条件表示?结果1:结果2;
注意:结果是一个数据(不能是输出语句)。
int age=18;
String s = age>=18?"可以开车了":"好好学习";
-
位运算符
按照二进制位进行运算的运算符,运算效率高
&,|,~,^ ,
左移<< :左移n位,等于乘以2的n次幂。
右移>> :右移n为,等于除以2的n次幂,除不尽时,向下取整。
无符号右移>>> :底层二进制数据移动时,左边始终补0
-
运算符的优先级
大体的排序:算术 > 位 > 比较 > 逻辑 > 三元 > 赋值
第三章 流程控制
- 顺序结构:代码自上而下逐行执行
-
选择结构:根据条件不同,选择性的执行某些特定代码
- 循环结构:根据条件,重复执行特定代码
一、键盘录入
键盘扫描器 java.util.Scanner;
import java.util.Scanner;//导入
//....
//创建一个键盘扫描器
Scanner in = new Scanner(System.in);
//提示信息
System.out.println("请输入数据:");
//接收数据
int n = in.nextInt();//接收整数
char ch = in.next().charAt(0);//接收一个字符
String s = in.next();//接收字符串,遇到空白字符结束
String line = in.nextLine();//接收一个行字符串,遇到enter键结束。
二、分支结构
1.if语句
-
格式一:
if(关系表达式){
语句块
}
-
格式二:
if(关系表达式){
语句块1
}else{ 语句块2
}
-
格式三:
if(关系表达式1){
语句块1
}else if(关系表达式2){
语句块2
}else if(关系表达式3){
语句块3
}else{
语句块n
}
-
if语句嵌套
if(年龄大18){
if(男性){
// 开车
}else{
//
}
}
2.switch语句
-
格式:
switch(常量表达式){
case 常量值1:
语句块1;
break;
case 常量值2:
语句块2;
break;
case 常量值3:
语句块3;
break;
default :
语句块
break;
}
-
格式说明
- 常量表达式的值跟case后面的常量值相等时,执行case后对应的语句块。
- 常量表达式值的类型,限定为6种:byte,short,int,char,String,枚举
- break关键字,用于跳出switch语句,如果没有会穿透执行下一个case语句块。
- case后面的常量值不能重复。
3.if与switch比较
- if语句的条件是布尔类型,更方便使用范围作为条件
- switch语句条件,只能是常量值,而且类型有限制
- 如果添加时固定的几个常量值时,可以使用if或switch,如果固定值的个数较多时,推荐使用switch语句。
三、循环语句
1.for循环
-
格式
for(初始化语句①; 循环条件语句②; 迭代语句④){
循环体语句③
}
for(;;){
循环体语句块;//如果循环体中没有跳出循环体的语句,那么就是死循环
}
-
执行流程:①②③④②③④②③④…②
-
示例
for(int i=0;i<5;i++){
System.out.println(i);
}
2.while循环
-
格式
while (循环条件语句①) {
循环体语句②;
}
while(true){
循环体语句;//如果此时循环体中没有跳出循环的语句,也是死循环
}
-
执行顺序:①②①②①②…①
-
示例
int i=0;
while(i<5){
System.out.println(i);
i++;
}
3.do…while循环
-
格式
do {
循环体语句①;
} while (循环条件语句②);
-
执行顺序:① ②①②①②…②
4.循环语句比较
- 如果循环次数确定,使用for循环
- 循环次数不确定,使用while
- 只是执行一次循环体,使用do…while
- for(;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)