/ / 此文章内容近月会持续更新,目标最深刻的基础整理
/ / 写给现阶段的自己:注意细节,漏洞往往都出现在那些似是而非的地方;戒骄戒躁,脚踏实地的虚心学习
Java概述
- 什么是Java:一种高级编程语言。
面向对象 - Java程序开发过程
(1)源代码 . java文件
—编译器(Javac)
(2)字节码 .class文件
—Java虚拟机(JVM)
—Java启动器—运行 - 特点
(1)擅于设计网络应用开发(EE、框架
)
(2)跨平台(JVM:一处编译多处运行)
(3)Java平台运行于纯软件平台(JVM+API) - 优势
(1)入门快
(2)代码量少
(3)代码质量高
(4)开发效率高
(5)避免平台相关性
(6)一次编写,处处运行 - 应用领域
各类应用,系统开发
ex:应用程序、嵌入式系统开发、电子商务应用开发、企业应用开发、交互式系统开发、多媒体系统开发、分布式系统开发、web应用系统开发
开发准备
- JDK_开发环境
(1)将压缩包解压到非中文目录下
(2)将bin文件夹的绝对路径复制
(3)计算机-属性-高级-环境变量-用户变量-名称:path-值:粘贴路径
(4)验证是否配置成功:CMD窗口中输入:java -version - IDE_开发软件
(1)eclipse :主流的教育平台,都使用这一工具,建议初学者使用,以后再转其他工具也来得及
(2)IDEA:新流行的企业开发平台
第一个Java程序
文本工具中编写一段Java程序
将拓展名改为.java(例如:test.java)
在cmd,进入程序文件所在盘(D:)
进入子文件夹(cd 文件夹名)
编译程序(javac test.java)
运行程序(java test.java)
语言基础
数据
- 什么是数据
- 数据类型
(1)基本数据类型
(2)引用数据类型 - 变量和常量
(1)定义:
(2)声明:
(3)变量分类:
1.类型
———— 基本类型
(1)整数*6
1)整形*4
byte:8位(占用空间相比int要小1/4,其他同理),-128~127(-2^7~2^7-1),默认值:0
short:16位,-32768~32767(-2^15~2^15-1),默认值:0
int:32位,-2147~2147_10位(-2^31~2^31-1),默认值:0
long:64位,9_19位(-2^63~2^63-1),默认值:0L
2)浮点型*2
float:32位,单精度,默认值:0.0f,表示范围:很大;
double:64位,双精度,默认值:0.0d,表示范围:很大很大;
注:声明一个浮点数默认是double类型的,用float定义的变量存储时必须在浮点数后面要加F
注:单精度与双精度的区别
在计内占4/8字节,有效数字8/16位,表示范围不同,单精度程序处理速度较快
(2)字符
char:16位,0~65535,可以存储任何字符
(3)布尔
boolean:1位,true/false,默认false
————引用类型
(1)默认值:null
(2)类型:数组、枚举、接口、类(对象)、字符串
(3)概述:引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为特定类型,声明后不能再改变
(4)数组:存储事先声明好大小的相同数据类型的集合,数组存储下标从0开始,元素默认值为其数据类型默认值
int[] a=new int[3];
int[] b= {1};
—————基本数据类型&引用数据类型:区别
(1)基本数据类型在被创建时,在栈上给其划分一块内存,,将数值存储在栈上;
(2)引用数据类型在被创建时,在栈中给其引用(相当于C指针)分配内存,对象的具体信息存储在堆内存上,然后由栈引用指向堆中对象的地址
2.位置
(1)局部变量:必须赋初始值,只在方法体内有效(通过方法返回值才能将局部变量值传出来)
(2)全局变量:可不赋初始值,默认有默认值,全类有效
public class Demo {
long p1; //默认初始值:0
long p2=10; //输出10
public static void main(String[] args) {
long l=0;
// long l; Error:局部变量必须赋初始值
}
}
(4)变量三要素:
数据类型 、变量名、初始值
4. 数据类型转换
0.由小到大:byte-short-char-int-long-float-double
其他如String也可以进行转换,boolean不参加转换
1.不能对boolean类型进行类型转换。
2.不能把对象类型转换成不相关类的对象。
3.在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
4.转换过程中可能导致溢出或损失精度
5.浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入
6.必须满足转换前的数据类型的位数要低于转换后的数据类型,
字符型转换成整形要预先是整形字符
7.整型、实型(常量)、字符型数据可以混合运算。
运算中,不同类型的数据先转化为同一类型,然后进行运算。
例如byte,short,char 在做运算的时候,自身先转换为int ,再运算;
混合运算时,结果是最大的类型
(1)由大转小—强制转换()
(2)由小转大—自动转换
public class Demo {
public static void main(String[] args) {
long l=10;
// int i=l; Error:大不能直接给小赋值
int i=(int)l; //强制转换,不报错
int j=10;
long k=j; //自动转换,不报错
char c='A';
// char c='A4'; Error:字符只支持单个任意字符
String str="wo啥都行^_^!"; //字符串可以多个任意字符
//对于画蛇添足的强制转换,系统也不报错
int c = (int)1234;
char ch = (char)('A'+4); //此时控制台输出:E
}
}
运算符
1. 分类
(1)算术 : +,-,*,/ ,% ,++,- -
1) / 和 % 的区别?
/ => 取商
% => 取余数
2)a++ : 先取a的值,然后再加1
++a : 先加1 ,再取a的值
(2)关系 : > < == != >= <=
(3)逻辑:& | !&& || ^
1)与‘&’:遇假则假
2)或‘ | ’:遇真即真
3)逻辑与‘&&’:短路运算符,如果第一个为假,则结果必为假,不执行后面的语句
4)逻辑或‘||’:短路运算符,如果第一个为真,则结果必为真,不执行后面的语句
5)逻辑异或‘^’:同假异真
注意:&和&&的区别、|和||的区别:单个的需要前后都判断后再得出结果;两个的,对于&&来说如果第一个为假,则后面的不执行,直接得出结果为假。
(4)连接
+
(5)扩展
+= ,-= , =,/=,%=
eg: a+=b(效率高)=> a=a+b
(6)三目
<表达式 1>?<表达式2>:<表达式3>
判断表达式1的真假,真则该三目运算符值为表达式二,反之为表达式三
(7)赋值
=
将后面的值赋值给前面的,注意区分=/==
2. 运算符优先级
注释
给人看的,不参与程序的执行,用以解释代码,方便团队合作、二次开发
(1) //单行注释
(2) /*多行*/
(3)
/*
*文本注释
*/
标识符&关键字
- 标识符
(1) 由数字、字母、_ 、$ 组成
(2)不能由数字开头
(3)不能是java的关键字 - 关键字
(1)关键字是 java 里面具有一定意义的标识 ,不能作为标识符使用;所有关键字都是小写字母
(2)java 有2个(保留)关键字:goto、const ,他俩也不能作为标识符,算关键字
(0)注意:null是关键字、一个符号,代表不确定对象,只能赋给引用类型变量,不能赋给基本类型变量;NULL不是关键字,代表空地址。
String…不是,class、int、this、super、goto…是
// int null=0; 此处报错
int NULL=0; //此处不报错
权限修饰符
流程控制语句
-
顺序结构:自上而下,自左而右执行顺序
-
分支结构:
(1)单分支:
1)if (boolean表达式){}else{}
2)if(){}
注意: 如果判断 后面就有一个语句,大括号也可以省略,但是不建议省略
(2)多分支:
1)if(boolean类型){}else if(){}else if(){}…else{}
2)switch(定值){}
定值类型:int类型兼容的(int,byte,char,short)jdk1.7才有String ,jdk1.5枚举
(3)循环结构
1)for(变量的初始化;循环条件;变量的增减变化){
循环体
}
2)while(循环条件){循环体}
3)do{循环体} while(条件)
3个循环什么区别? 什么时候用for 什么时候用while ,什么时候 用 do while
——
当你知道循环次数的时候用for
while 不知道循环次数
do while ==》 无论条件是否成立, 肯定先执行 一次循环事件
(4)跳出语句
break :停止循环,跳出当前循环语句(非循环语句不算)
continue:停止当次循环,然后继续下一轮循环
代码书写规范
- 多单词组合用驼峰标识
- 类名首字母大写、变量名小写、常量名大写
- 命名语义化
数组
- 定义: 相同数据类型的统一管理,在内存中开辟一段连续的空间 ,是一样类型的
- 作用: 方便查找
- 数组如何定义?
数据类型 [] 数组名 = new 数据类型[长度]; // 动态初始化
数据类型 [] 数组名 ={数据1,数据2,。。。}; - 如何使用数组
通过 下标 ,下标从 0开始,到 长度-1 - 数组元素 有默认的初始值
整型就是 0 浮点 0.0 引用类型 null - 数组的遍历
属性 长度 ==》 数组名.length - 数组的排序 :
快速排序, 冒泡,二分法,插入,希尔 - 多维数组
二维
定义: 数据类型 [][] 数组名 =new 数据类型[][];
注意:开辟空间的时候!长度给值 必须从高维 往低维 赋值
数组的扩容
方法 (函数):
- 含义:完成特定功能的代码块
- 作用:
1)减少代码量
2)方便主函数调用
3)可以重复使用
4)方便后期维护 - 格式
public static 返回值类型 方法名(参数列表){
[return 语句;]
}
- 返回值类型:
(1) 8种基本数据类型
(2)引用类 型 String 数组
(3) void:无返回值 - 方法名命名命名规则: 首字母小写和变量一样,驼峰标识,语义化
- 方法重载 :
格式:方法名必须相同,参数列表必须不同(参数的类型,个数,顺序),方法的返回值类型是否相等不影响重载
作用:程序设计方便,提高效率 - 方法重写: