JAVA基础

Java基础知识总结
 配置环境变量:
 语言基础
 循环结构
 函数(方法)
 数组
 面向对象
 面向对象三大特性
 三个修饰符
 接口
 常用类
 集合框架
 异常
 I/O框架
 多线程
 反射
 

配置环境变量:
在系统配置中新建
变量名:“JAVA_HOME”
变量值:“C:\Program Files (x86)\Java\jdk1.6.0_21”(jdk安装路径)

在系统配置中新建
变量名:“CLASSPATH”
变量值:"."

在系统变量中编辑Path变量
添加"%JAVA_HOME%\bin;" //注意:加分号结束

测试:运行–> cmd -->java/ javac命令回车,看到配置信息为正确(java -version查看jdk版本)
提示:“不是内部或外部指令”为失败

语言基础
一、HelloWorld:Class–>班级 Java中Class–>类

创建以.java结尾的源文件。
class:类(代码的容器)。
main:主函数,程序执行的入口,一个类当中,只能有一个主函数。
一行只写一句代码,以 ; 结束。
Writer once Run anywhere
JVM(Java Virtual Machine)Java虚拟机 VM Virtual Box
二、编译、运行:

编译:javac 源文件名称.java 例:javac A.java --> HelloWorld.class
运行:java 类名 例:java HelloWorld
三、类的基本阐述:

在一个源文件中,可以定义多个类,编译后,每个类都会生成独立的 字节码文件。
在一个类中,只能有一个主函数。
公开类(public class)的类名要和文件名完全相同。
在一个源文件中,只能有一个公开类。
四、Package(包):

作用:管理类、区分类。
语法:package 包名;(必须在源文件的首行)
带包编译:javac -d . 源文件名称.java(自动生成目录结构)
带包运行:java 包名.类名 (全限定名)
采用域名倒置的规则: http://www.yangxianyang.top
top.yangxianyang.java.class63.group1.project2.utility
五、编码规范:

良好的注释习惯:
I. 注释不参与编译。
II. 单行注释: //单行
III. 多行注释: /* 多行 /
IV. 文档注释: /* 文档 */ javadoc指令生成外部说明文档
例:javadoc -d . 源文件名称.java

良好的标识符命名规范:
I. 硬性:
1). 数字、字母、_ 、$ ,数字不能开头。
2). 不能与关键字、保留字重名。

II. 软性:(约定俗成)
1). 望文生义、见名知义。
2). 类名可以由一个或多个单词组成,每个单词的首字母大写 (Pasacl帕斯卡命名法)
3). 函数、变量由一个或多个单词组成,首单词首字母小写,拼接 词首字母大写(Camel驼峰命名方法)
4). 包名全小写,只能用特殊字符" . “,并且不能以”.“开头或结尾。
5). 常量全大写,多个单词通过”_"拼接。

bit Byte KB MB GB TB PB EB ZB YB BB NB CB XB
六、变量:

一个存储空间的表示,也是存储数据的基本单元。

语法:
I. 声明:数据类型 变量名;
赋值:变量名 = 值;
II. 声明并赋值:数据类型 变量名 = 值;
III. 同时声明多个变量:数据类型 名1,名2,名3=值;

七、数据类型:HotSpot 1.3.1 iadd isub imul idiv badd bsub

基本数据类型(原始、简单):8种
I. 整数:
1). byte 1个字节 -2^7 ~ 2^7-1 -128 ~ 127 0111 1111
2). short 2个字节 -2^15 ~ 2^15-1 -32768 ~ 32767
3). int 4个字节 -2^31 ~ 2^31-1 -2147483648 ~ 2147483647
4). long 8个字节 -2^63 ~ 2^63-1 “add L”
II. 小数(浮点):近似值(1bit符号位、8bits指数位、23bits尾数位)
1). float 4个字节 1.4E-45 ~ 3.4E38 add F IEEE754标准
2). double 8个字节 4.9E324 ~ 1.7E308

III. 字符:无符号数(取值范围从0 ~ 65535)
1). char 2个字节 \u0000 ~ \uFFFF ‘A’ 65 ‘\u0041’ ASCII编码
2). 转义字符: \t \n \ ’ "

IV. 布尔:
1). boolean 取值范围:true / false

引用数据类型(对象):N种
I. 字符串:String “abc” “HelloWorld”
八、类型转换:

自动类型转换:
I. 两种类型相互兼容。
II. 目标类型大于源类型。

强制类型转换:
I. 整数长度合适,数据完整。
II. 整数长度不适,数据截断。
III. 小数强转整数,失去精度,如,整数长度不适,则再次数据截断。
IV. 字符整数互转,数据完整,如,整数为负数,则转型成"?"
V. boolean的取值只有true、false,无法转换。

九、表达式:

概念:使用运算符连接的变量或字面值,并可以得到一个最终结果。

自动类型提升:
I. 两个操作数,有一个为double,其结果提升为double。
II. 如果没有double,有一个为float,其结果提升为float。
III. 如果没有float,有一个为long,其结果提升为long。
IV. 如果没有long,有一个为int,其结果提升为int。
V. 如果没有int,也会自动提升为int。
VI. 任何类型与String相加(+)时,实为拼接,则提升为String。

十、运算符:

算数运算符:+ - * / % ++ –
赋值运算符:= += -= *= /= %= …
关系运算符:> < >= <= == !=
逻辑运算符:
I. && 与(并且):两个条件同时为真,结果为真。(短路)
II. || 或(或者):两个条件有一个为真,结果为真。(短路)
III. ! 非(不是):取反。
三元运算符:布尔表达式? 结果1 : 结果2;
十一、控制台输入:

导包:import java.util.Scanner;
创建Scanner变量并赋值:Scanner input = new Scanner( System.in);
通过控制台获取不同内容:
I. nextInt(); //获取整数
II. nextDouble(); //获取小数
III. next(); //获取字符串
IV. next().charAt(0); //获取单个字符
注:如果输入了不匹配的数据,java.util.InputMismatchException
十二、选择结构:

基本if选择结构:
if(布尔表达式){
//表达式结果为true,则执行此代码块
}

if else选择结构:
if(布尔表达式){ //程序猿、程序媛
//表达式结果为true,则执行此代码块
}else{
//否则,执行此代码块
}

多重if选择结构:
if(布尔表达式){
}else if(布尔表达式){
}else if(布尔表达式){
}else{}
注:相互排斥,当有一个条件被满足时,其他均不再执行。适用于区 间判断,保证升降的书写顺序。

十三、分支结构:

switch分支:
switch(byte、short、int、char){ //JDK7之后可以判断String
case 1:
//执行代码
break;
case N:
//执行代码
break;
default:
//执行代码
break;
}

break关键字:中断、中止、跳出当前swithc分支结构。

注:适用于等值判断,所有case的选项不可重复,并不会在满足某个 选项后自动跳出switch,必须手动添加break中断。

十四、局部变量:

概念:声明在函数内部的变量,必须先赋值再使用。
作用范围:定义行开始到包含它的代码块结束。
命名冲突。
循环结构
一、循环:

概念:通过某个条件,使一段代码周而复始的执行。
组成:初始部分、循环条件、循环操作、迭代部分。
分类:
I. while循环:
while(布尔表达式){
}
特点:先判断,再执行。
应用场景:循环次数明确。
例:1、2、3、4、5 ~ 100总和的统计
II. do while循环:
do{
}while(布尔表达式);
特点:先执行,再判断。
应用场景:循环次数不明确。
例:先完成作业,再检查结果。

III. for循环【重点】:
for(1.初始部分; 2.循环条件; 4.迭代部分){
 //3.循环操作
}
特点:先判断,再执行。
应用场景:循环次数明确。
例:阶乘。

二、流程控制语句:

break:中止、跳出switch或循环结构。
continue:结束本次、进入下一次循环。
三、嵌套循环:

概念:在一个完整的循环结构当中,嵌套另一个完整的循环结构。
图形:外层控制行数,内层控制列数。
其他:外层控制循环次数,内层控制单次循环操作。
函数(方法)
一、概念:实现特定功能一段代码,可反复使用。

二、语法:
public static 返回值类型 函数名称( 形式参数列表 ){
//函数主体
[ return value; ] //返回值
}

三、组成:

函数名称:望文生义(camel命名法)
函数主体:逻辑代码,完成特定功能。
形式参数:即是函数的局部变量,可声明0~N个,调用时完成赋值。
返回值类型:基本数据类型、引用数据类型、void。
返回值:
return value;//结束当前函数,并伴有返回值,返回到函数调用处。
return;//单独出现,只代表结束当前函数,返回到函数调用处。
规定:一个函数只能有一个返回值,至多是一个返回值。
注意:当函数存在分支语句时,要保证所有分支都具有正确的返回 值。
四、调用:

无参调用:函数名称();
有参调用:函数名称(实际参数…);//为形参赋予实际的值,类型、个数、 顺序必须与形参列表完全匹配。
数据接收:数据类型 变量名 = 函数名称(实参列表); //当所调用的函 数具有返回值时,可通过声明与返回值类型匹配的变量进行接收。
执行机制:调用函数时,程序会跳转到函数的定义位置,并优先执行 函数内部内容;执行完毕之后,会携带返回值,返回到函数调用位置。
五、总结:

一个类中可以定义多个函数,函数之间属于并列关系,不可嵌套。
一个函数只做一件事儿。(单一职能原则)//粒度
减少冗余代码、提高复用性、提高可读性、提高可维护性、方便协同 合作。
六、递归:

将大问题拆分成小问题,解决方案一致,有固定的规律,则可实现递归。
函数自己调用自己(每调用一次,等于重新调用了另外一个函数)。
递归中一定包含判断表达式,设定出口条件,否则产生无穷递归。
StackOverflowError //JVM栈空间溢出错误
数组
一、概念:一组连续的存储空间,存储多个相同数据类型的值。

二、语法:

数据类型[] 数组名; //声明数组
数组名 = new 数据类型[ 长度 ]; //分配空间

数据类型[] 数组名 = new 数据类型[ 长度 ]; //声明并分配空间

数据类型[] 数组名 = new 数据类型[]{值1,值2,值3,…} //显示初始化

数据类型[] 数组名 = {值1,值2,值3,…} //显示初始化(不能分行书写)

三、访问:

index(索引、下标),有效值:0 ~ length - 1
数组名[下标] ,进行数组元素的访问。
长度:数组名.length //动态获取长度。
遍历:从头到尾逐一访问数组的元素。
注意:避免数组下标越界错误(java.lang.ArrayIndexOutOfBoundsException)
四、默认值:

int 0
double 0.0
boolean false
chara \u0000
String null (所有的引用数据类型,默认值都是null)
五、应用:

统计一组元素的总和。

数组扩容:
I. 声明:在原数组长度的基础之上,重新声明新数组。
II. 赋值:(复制)
1). 通过循环将原数组中的每个元素,依次复制给新数组的每个元 素。
2). System.arraycopy(原数组名,原数组起始下标,新数组名,新数组起 始位置,长度);
3). dataType[] java.util.Arrays.copyOf(原数组名,新长度);

增删元素:
I. 将插入位置起的所有元素,依次后移一位。
II. 将删除位置后的所有元素,依次前移一位。

六、排序:

冒泡排序:相邻的两个数值比较大小、互换位置(升序:前小后大)
规则:外层length-1,内层length-1-i

选择排序:固定值和其他值依次比较大小,互换位置。
规则:内层 int j = i + 1;

快速排序:java.util.Arrays.sort(数组名); //JDK提供(只能做升序)
规则:如需降序,自行实现reverse

七、二维数组:

概念:一维数组的一维数组,一维数组的元素,还是数组。

语法:
I. 数据类型[][] 数组名;
数组名 = new 数据类型[高维长度][低维长度];

II. 数据类型[][] 数组名 = new 数据类型[高维长度][];//不规则矩形
注意:低维数组必须自行通过new语句创建。

III. 数据类型[][] 数组名;
数组名 = new 数据类型[][]{ {v1,v2,v3},{v4,v5},{v6,v7,v8,v9} };

面向对象
一、面向对象思想(Object Oriented Programming):

一切客观存在的事物都是对象,万物皆对象。
对象一定具有自己的特征(属性)和行为(方法)。
二、类:

概念:
I. 在一组相同或类似的对象中,抽取出共性的特征和行为。
II. 类是对象的模板。
现实生活中的对象–(抽象)–>程序中的模板(类)–>
创建程序中的对象–>解决现实问题
类是对象的抽象,对象是类的实例

组成:
I. 属性:(代表对象有什么)
1). 实例变量(成员变量):声明在类的内部,函数的外部,当通过 类构建对象的同时,所有成员变量都成为当前对象不可分割的 特征。
2). 语法:数据类型 属性名;
局部变量 成员变量
定义位置 函数或函数中的结构中 类的内部、函数的外部
默认值 无 字面常量(与数组相同)
使用范围 从定义行到代码块结束 本类有效
命名冲突 不允许与局部变量重名 可与局部变量重名,但局部变量优先

注:如成员变量的声明和赋值分开完成,则赋值语句必须在函数内部。

II. 方法:(代表对象能做什么)
访问修饰符 返回值类型 方法名称( 形式参数列表 ){
//方法主体
[return value;] //返回值
}

III. 方法重载(Overload):
1). 概念:方法名称相同、参数列表不同(类型、个数、顺序)。
2). 屏蔽使用的差异、灵活、便利。

IV. 构造方法(Constructor):
1). 没有返回值类型。
2). 构造方法名称必须与类名完全相同。
3). 创建对象时,触发构造方法的调用,不可通过句点手动调用。
4). 注意:
a. 在类中,如没有显示定义构造方法,则编译器默认提供无参 构造方法。
b. 如显示定义过构造方法,则无参构造方法不再默认提供。
c. 构造方法可以重载,遵循重载规则。
d. 通过关键字new对象时,根据传入不同的参数,调用对应的 构造方法,完成对象的创建。
e. 有参构造方法可在创建对象的同时,为各个属性赋值,或完 成必要的初始行为。

三、对象:

概念:
I. 具有多个特征和行为的实体。
II. 对象是类的实例。

创建对象:
I. 语法:数据类型 对象名 = new 数据类型();
II. 空间的分配:栈分配局部变量空间,堆分配对象空间。
III. 属性默认值:基本为对应的零值,引用为null。

四、访问属性和方法:

引用(存储对象的局部变量)中保存的是对象的具体地址。(reference)
通过引用访问对象的属性和方法:
Dog d1 = new Dog();
d1.breed = “拉布拉多”;//赋值
d1.breed //取值
d1.eat(); //调用方法
五、this关键字:

当前实例,当成员变量与局部变量重名时,如需使用成员变量,应增 加this.前缀。例如: this.name this.age
通过this()或this(实参)调用本类中的其他构造方法,但必须是构造方 法的首行。
构造方法之间可以相互调用,但最终产生的对象只有一个。每new一 次,只有一个对象。
六、数据的传递(赋值):

值传递:基本数据类型,传递的是值,一方改变不会影响另乙方。
引用传递:引用数据类型,传递的是地址,一方改变另一方也会变。
-----------------------------------
©著作权归作者所有:来自51CTO博客作者wx5efde04e640b7的原创作品,请联系作者获取转载授权,否则将追究法律责任
Java基础知识点总结
https://blog.51cto.com/u_14862440/3667804

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值