java基础
java三大版本
- javase:面向桌面(桌面程序,控制台开发)
- javame:面向手机(手机,小家电)
- javase:面向服务器(web端,服务器端)
三高
高性能,高可用,高并发
java 的特性和优势
- 简单性
- 面向对象
- 可移植性
- 高性能
- 分布式
- 动态性
- 多线程
- 安全性
- 健壮性
JVM,JDK,JRE
- jdk:java development kit Java开发环境 包括jre和jvm
- jre:java runtime enviroment java运行时环境
- jvm:java virtual machine java 虚拟机
java程序
- .java :Java文件后缀名
- .class:java字节码文件
- java的编译 javac Java文件名.java
- java的运行 java Java字节码文件名
IDE
集成开发环境
java注释
- 单行注释: / / \color{red}{//} //
- 多行注释: / ∗ ∗ / \color{blue}{/**/} /∗∗/
- 文档注释: / ∗ ∗ ∗ ∗ / \color{purple}{/****/} /∗∗∗∗/
标识符
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eMxOaihp-1610263019252)(C:\Users\86156\AppData\Local\Temp\1610177540092.png)]
- 所有标识符都应该以字母(a-z或A-Z),美元符号($),或者下划线(_)开始
- 首字母后可以是字母(a-z或A-Z),美元符号($),或者下划线(_)或数字的任何字符组合
- 不能使用关键字作为变量名或者方法名
- 标识符大小写敏感
数据类型
java强类型语言
要求变量的使用要严格符合规定,所有变量必须先定义后才能使用
Java的数据类型###
- 基本数据类型
- 引用数据类型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O05Mvamd-1610263019256)(C:\Users\86156\AppData\Local\Temp\1610178561840.png)]
long类型数字后面要加一个L
float类型数字后面要加一个F
boolean的默认值是false
String 不是关键字,是类
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8zVkuXAO-1610263019257)(C:\Users\86156\AppData\Local\Temp\1610179128190.png)]
float、double有限,离散,舍入误差,大约,接近但不等于
最好完全避免使用浮点数进行比较
类型转换
低-》高 自动转换
高—》低 强制转换 ,可能会内存溢出,或者精度问题
jdk7新特性:数字之间可以用下划线分割,且下划线不会输出
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IX3rZ9xT-1610263019258)(C:\Users\86156\AppData\Local\Temp\1610180353183.png)]
变量###
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uHfSLAs7-1610263019260)(C:\Users\86156\AppData\Local\Temp\1610199230625.png)]
- **类变量 static **
- 实例变量:从属于对象,如果不初始化,值是默认值
- 局部变量:必须声明和初始化值
变量命名规则####
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eC9TkWNq-1610263019261)(C:\Users\86156\AppData\Local\Temp\1610182097812.png)]
常量###
final
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SpWchpqc-1610263019262)(C:\Users\86156\AppData\Local\Temp\1610199323951.png)]
运算符##
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nf5iVtrw-1610263019263)(C:\Users\86156\AppData\Local\Temp\1610182345480.png)]
面试题###
2*8如何算最快
用位运算符 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-38RURFyl-1610263019263)(C:\Users\86156\AppData\Local\Temp\1610183616377.png)]
输出语句时如果** 进 行 运 算 的 数 字 \color{red}{进行运算的数字} 进行运算的数字**之前有String,则数字自动转为字符串,
如果数字之前没有字符串,则数字就进行运算
输入##
int sum=0;
int x=0;
Scanner scanner =new Scanner(System.in);
while(scanner.hasNextInt()){
int now=scanner.nextInt();
sum=sum+now;
x++;
System.out.println("你输入的是第"+x+"个数:"+now+",当前总和:"+sum+"当前平均数:"+sum/x);
}
System.out.println("当前平均数:"+sum/x);
scanner.close();
流程控制##
###流程控制结构###
-
顺序结构
-
if多选择结构
-
switch多选择结构[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BkqDlIMd-1610263019264)(C:\Users\86156\AppData\Local\Temp\1610192514867.png)]
-
while循环结构
-
while()
-
do{
}while()
-
-
for循环结构
-
100.for:快捷键生成
for (int i = 0; i < 100; i++) { }
-
增强for循环
-
-
break和continue
- break在任何循环体的主体部分均可用, b r e a k 用 于 强 制 退 出 循 环 \color{red}{break用于强制退出循环} break用于强制退出循环,不执行循环中的剩余语句
- continue语句在循环主体中用于种植某次循环,即退出循环体中尚未执行的语句 接 着 进 行 下 一 次 循 环 的 判 断 \color{red}{接着进行下一次循环的判断} 接着进行下一次循环的判断
流程结构题####
-
打印101到150之间的质数
for (int i = 101; i < 150; i++) { boolean b=true; for (int j=2;j<i/2;j++){ if(i%j==0){ b=false; j=i/2; } } if(b) System.out.println(i+" "); }
-
打印三角形
//打印三角形 for (int i = 0; i <= 5; i++) { for (int j = 5; j >=i; j--) { System.out.print(" "); } for (int j = 0; j <= i; j++) { System.out.print("*"); } for (int j=0;j<i;j++){ System.out.print("*"); } System.out.println(); }
反编译###
顺着提了一下,idea可以反编译,只需要将class文件丢进java文件所在的文件夹内即可查看
java方法##
设计方法的原则:一个方法只实现一个功能
方法定义###
方法名:驼峰命名法####
修饰符 返回值类型 方法名(参数类型 参数名){
方法体
return 返回值;
}
= j a v a 是 值 传 递 \color{red}{java是值传递} java是值传递
方法的重载###
重载就是在一个类中,有相同的函数名称,但形参不同的函数
方法重载的规则:
- 方法名称必须相同
- 参数列表必须不同(个数不同或类型不同、参数排列顺序不同)
- 方法的返回类型可以相同也可以不同
- 仅仅返回类型不同不足以成为方法的重载
命令行传参
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SiqcBLFH-1610263019265)(C:\Users\86156\AppData\Local\Temp\1610201062919.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hkdcPbRe-1610263019266)(C:\Users\86156\AppData\Local\Temp\1610201129908.png)]
可变参数###
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N4O3rK8n-1610263019266)(C:\Users\86156\AppData\Local\Temp\1610201348966.png)]
递归###
递归结构包括两个部分:
- 递归头:什么时候不调用自身方法,如果没有头,将进入死循环
- 递归体:什么时候需要调用自身方法
能不用递归就不用递归,因为递归的数太多,计算机可能崩溃,数量小的情况下可以使用
数组###
- 数组是相同类型数据的有序集合
- 数组描述的是相同类型的若干个数据,按照一定的先后顺序排列组合而成
- 其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问他们
数组的声明创建####
-
数组类型 [] 数组名;//声明一个数组,并未分配空间
-
数组名 =new 数组类型[数组大小];//这是创建了一个数组,分配了空间
-
给数组元素赋值
eg:nums[0]=1
数组的四个基本特点####
- 其长度是确定的。数组一旦被创建,它的大小就是不可以改变的
- 其元素必须是相同类型,不允许出现混合类型
- 数组中的元素可以是任何数据类型,包括基本类型和引用类型
- 数组变量属于引用类型,数组也可以看成对象,数组中的每个元素相当于搞对象的成员变量,数组本身就是对象,java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FooIyGae-1610263019268)(C:\Users\86156\AppData\Local\Temp\1610254621324.png)]
多维数组####
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kDCNw6WT-1610263019268)(C:\Users\86156\AppData\Local\Temp\1610255820429.png)]
Arrays####
-
Arrays.toString(数组名);//打印数组所有元素 Arrays.sort(数组名);//数组进行升序排序
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dNmxCwmq-1610263019269)(C:\Users\86156\AppData\Local\Temp\1610257936136.png)]
排序算法#####
稀疏数组####
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5GAL0Xi7-1610263019272)(C:\Users\86156\AppData\Local\Temp\1610262383869.png)]
在这里插入图片描述