JAVA知识点总结
第一阶段
1.基础知识
1.1键盘功能键及快捷键介绍
Tab
Shift Ctrl Alt
空格 Enter
Window
上下左右
PrtSc(PrintScreen)屏幕截图
Ctrl+A 全选
Ctrl+C 复制
Ctrl+V 粘贴
Ctrl+X 剪切
Ctrl+Z 撤销
Ctrl+S 保存…
1.2常用的DOS命令
打开DOS控制台的方式
常用DOS命令
cmd 进入DOS窗口 #快捷方式,浏览目录,直接输入CMD跳转
默认是在c盘下,可以切换盘符。
e: 进入e盘
dir 列出当前目录下的目录和文件
mkdir 新建文件夹
rmdir 删除文件夹
cd java 进入java目录
cd … 退到上层目录
cd / 退到根目录
exit : 退出dos命令行
cls : (clear screen)清屏
1.3Java语言发展史
1991年sun公司James Gosling等人开始开发Oak语言
1994年,将Oak语言更名为Java
1996年获得第一笔投资1亿元
1998年提出jdk1.2,更名为java2
之后推出jdk1.3 jdk1.4
2005年更名为jdk5.0,进行了大幅的版本改进
2006年sun公司宣布将Java作为免费软件对外发布
2007年3月起,全世界所有的开发人员均可对Java源代码进行修改
2007年推出jdk6.0
2009年4月Oracle以74亿美元收购了sun公司
2011年7月由Oracle正式发布jdk7
2014年3月正式发布了java8
1.4 Java语言平台版本
J2SE(Java 2 Platform Standard Edition)标准版
是为开发普通桌面和商务应用程序提供的解决方案,该技术体系是其他两者的基础,可以完成一些桌面应用程序的开发。
J2ME(Java 2 Platform Micro Edition)小型版
是为开发移动设备和嵌入式设备(电器、机器人、机顶盒…)提供的解决方案。
J2EE(Java 2 Platform Enterprise Edition)企业版
是为开发企业环境下的应用程序提供的一套解决方案,该技术体系中包含的技术如 Servlet、Jsp等,主要针对于Web应用程序开发。
1.5 Java语言特点
简单性 高性能
编译性 解释性
面向对象 分布式处理
健壮性 安全性
开源 跨平台
1.6 JDK
JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心。
它包含了:
1、 JAVA开发工具(jdk\bin)
2、 基础开发库(jdk\jre\lib\rt.jar)
3、 基础开发库的源码(jdk\src.zip)
1.6.1JDK配置环境变量
右键我的电脑–属性–高级系统设置–环境变量–系统变量
1)添加变量名为JAVA_HOME的变量,变量值为JDK的安装目录
2)添加变量名为PATH的变量,变量值为安装路径下的bin文件
1.7JDK JRE JVM的关系
1、 JDK–Java Development Kit是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库。
2、 JRE–Java Runtime Environment是运行JAVA的运行时环境,包含JVM和Java核心类库。
3、 JVM–Java Virtual Machine,Java虚拟机的缩写,是整个java实现跨平台的最核心的部分,能够运行以Java语言写作的软件程序。
1.8标识符
可以简单的理解为一个名字。在Java中,我们需要标识代码的很多元素,包括类名、方法、字段、变量、包名等。我们选择的名称就称为标识符,并且遵循以下规则:
A. 标识符可以由字母、数字、下划线(_)、美元符($)组成,但不能包含 @、%、空格等其它特殊字符。
B. 不能以数字开头。
C. 标识符是严格区分大小写的。
D. 标识符的命名最好能反映出其作用,做到见名知意。
1.9关键字
在java语言中已经被赋予特定意义的一些单词。一共有53个关键字。其中有两个保留字:const和goto。关键字不能被用作标识符!!
1.9注释
Java代码的解释说明。不影响程序的运行,用于辅助读程。
//单行注释
/* 多行注释 */
/** 文档注释 */
1.10变量
在JAVA中,有的数据值是不固定的,总在变,我们还需要记录这些值,我们可以把这些值理解为变量。
我们通过三个元素来描述变量:变量类型,变量名以及变量值。
int age=18; //声明int类型的变量并赋值
String tel; //声明String类型的变量
注意:
1、 变量名必须是一个有效的标识符。
2、 变量名不可以使用java关键字
3、 变量名不能重复
1.11常量
在程序运行过程中一致不会改变的量成为常量。
1.12数据类型
基本类型(八种)
练习1:求最大值,最小值
练习2:输入个人信息:王海涛今年20岁,月薪20000,奉劝大家拼命学java,才能早日走向人生巅峰。
练习3:圆形面积
圆的面积:πrr
圆的周长:2πr
练习4:变量交换
1.13引用类型
引用类型是一个对象类型,值是什么呢?它的值是指向内存空间的引用,就是地址,所指向的内存中保存着变量所表示的一个值或一组值。如:类,接口,数组,
1.14基本类型的字面值
整数字面值是int类型
浮点数的字面值是double类型
字面值后缀l f d
1.15 运算规则(5条)
1 计算结果的数据类型,与最大类型一致
2 byte,short,char三种比int小的整数,运算时会先自动转换成int
3 整数运算溢出 整数运算,类似于一个中标,转到最大时,再转会回到最小。
4 浮点数运算不精确
5 浮点数的特殊值
1.16 运算符
练习1:平年闰年
输入年号,判断是否是闰年。两个条件:
1、能被4整除,并且不能被100整除
2、或者能被400整除
练习2:自增自减
练习3:求两个数里的大值
练习4:求三个数的最大值
1.17
1.17.1分支结构1:if
单分支:
if(判断条件){
代码。。。
}
多分支:
if(判断条件){
代码1。。。
}else{
代码2。。。
}
嵌套分支:
if(判断条件1){
代码1。。。
}else if(条件2){
代码2。。。
} else if(判断条件3){
代码3。。。
}else{
代码4。。。
}
练习1:商品打折
接收用户输入的原价。满1000打9折。满2000打8折。满5000打5折
练习2:统计学员得分
90分以上 优秀 80-89良好 70-79中等 60~69 及格 60分以下 不及格
1.17.2分支结构2:switch
switch(expr1)中,expr1是一个整数表达式, 整数表达式可以是int基本类型或Integer包装类型,由于byte,short,char都可以隐含转换为int,所以也支持。
注意: jdk1.7以后新增 String
switch(变量或者表达式){
case 1:
case 2:
case 3:
case 4:
default:
}
练习1:数字匹配
1.17.3循环结构1:for
for(开始条件;循环条件;更改条件){
循环体代码…
}
练习1:打印0到10
练习2:打印10到0
练习3:打印8,88,888,8888
1.18&和&&的区别
当一个&表达式在求值的时候,两个操作数都会被求值,&&更像 是一个操作符的快捷方式。当一个&&表达式求值的时候,先计算第一个操作数,如果它返回true才会计算第二个操作数。如果第一个操作数 取值为fale,第二个操作数就不会被求值
练习1求【0,100】中,奇数的个数
求【0,100】中,偶数的和
1.19 嵌套for循环
for(…){
for(…){
}
}
入门案例
package day0000;
public class T {
public static void main(String[] args) {
// f1();
f2();
}
//总结1:当i=1时,j取到了所有满足条件的数据,1,2,3,4,5。
//也就是说外循环执行1次,内循环执行多次
private static void f1() {
for(int i=1;i<=3;i++){//外循环
System.out.println("i="+i);//1,2,3
for(int j=1;j<=5;j++){//内循环
System.out.println("j="+j);//1,2,3,4,5
}
}
}
//总结2:外循环控制行,内循环控制列
private static void f2() {
for(int i=1;i<=3;i++){
for(int j=1;j<=5;j++){
System.out.print("*");
}
System.out.println();
}
}
}
练习1:打印正方形
练习2:打印左直角三角形
练习3:打印99乘法表
1.20break和continue
用来终止循环,可以用两种方式
break: 中断当前循环,简单粗暴
for(){
代码1
if(条件){
代码3…
break;//如果成立,直接跳出这个for循环
}
代码2…
}
continue:跳出本次循环,进入下一轮
for(){
代码1
if(条件){
代码3…
continue;//如果成立,跳出本次for循环,进入下一轮
}
代码2…
}
练习1:找数字88 接收用户输入的100次数字,如果不是88继续输入,找到88就返回
1.21 循环结构2:while
先判断,再执行
while(执行条件){
代码…
}
练习1:猜数字
1.22循环结构3:do-while
先执行,再判断
do{
代码…
}while(执行条件);
练习1:猜数字
1.23变量
可以改变的数,称为变量。一般通过三部分来描述一个变量。变量类型,变量名,变量值。其中三部分都是可以改变的,根据需要来确定即可。
变量的使用原则:就近原则。尽量控制到最小范围。
1.23.1局部变量
定义在方法里,或者局部代码块中。
注意:必须手动初始化,来分配内存。如:int i=5;
作用域也就是方法里或者局部代码块里,方法运行完内存就释放了。
1.23.2
成员变量
定义在类里。
注意:不用初始化,也会自动被初始化成默认值。
作用域是整个类中,类消失了,变量才释放。
三种循环的区别
三种循环都可以互相代替
1、 for:知道循环次数
2、 while/do while:当循环次数不确定时
3、 while:先判断,不符合规则,不执行代码
4、 do while:代码最少被执行一次,再去判断,符合规则,再次执行代码
练习1打印右直角三角形
练习2打印全三角形
1.24方法
被命名的代码块,方法可以含参数可以不含参数
可以提高代码的复用性
修饰符 返回值 方法名(【参数】){
方法体;
}
1.25方法的重载
方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数列表(也就是说参数的个数和类型不同)。
程序调用方法时,可以通过传递给它们的不同个数和类型的参数来决定具体使用哪个方法。
1.26数组
数组Array是用于储存多个相同类型数据的集合。
想要获取数组中的元素值,可以通过元素的下标来获取,下标是从0开始的。
创建数组
一般分为动态初始化和静态初始化
动态初始化:int[] a = new int[5];
Ø 新建int[],长度是5
Ø 刚创建好的数组都是默认值0,int类型的数据默认值是0
Ø 把数组的地址值给变量a保存
静态初始化1:int[] a ={1,2,3,4,5,6,7,8};
静态初始化2:int[] a =new int[]{1,2,3,4,5};
数组的长度
Ø length属性获取数组长度
Ø 数组一旦创建,长度不可变
Ø 允许0长度的数组
数组的遍历
从头到尾,依次访问数组的位置。
for(int i=0;i<a.length;i++){
syso(a[i]);
}
练习1:输出每个月的天数
练习2:遍历数组,存入1到10
练习3:创建随机数组
1.27数组工具类Arrays
Arrays.toString(数组)
把数组里的数据,用逗号连接成一个字符串。
格式:[10, 14, 20, 46, 51]
Arrays.sort(数组)
对数组排序,对于基本类型的数组使用优化后的快速排序算法,效率高.对引用类型数组,使用优化后的合并排序算法。
Arrays.copyOf(数组,新的长度)
把数组复制成一个指定长度的新数组。
新数组长度大于原数组,相当于复制,并增加位置。–数组的扩容
新数组长度小于原数组,相当于截取前一部分数据。–数组的缩容
二维数组
存放数组的数组,也就是说数组里存的还是数组的数据形式。
冒泡排序
package day0000;
import java.util.Arrays;
import java.util.Random;
public class TT {
public static void main(String[] args) {
int[] arr = new int[]{43, 36, 45, 18, 24,9,20,32};
int[] arrnew = f1(arr);
System.out.println(Arrays.toString(arrnew));
}
private static int[] f1(int[] a) {
//外循环控制循环次数,如果5个数字,循环4次就行
for (int i = 0; i < a.length-1; i++) {
//内循环控制比大小,循环次数和外循环一样
for (int j = 0; j < a.length-1; j++) {
if(a[j]>a[j+1]){
int t = a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
return a;
}