一.Java语言发展史
詹姆斯·高斯林(James Gosling)1977年获得了加拿大卡尔加里大学计算机科学学士学位,1983年获得了美国卡内基梅隆大学计算机科学博士学位,毕业后到IBM工作,设计IBM第一代工作站NeWS系统,但不受重视。后来转至Sun公司,1990年,与Patrick,Naughton和Mike Sheridan等人合作“绿色计划”,后来发展一套语言叫做“Oak”,后改名为Java。
SUN(Stanford University Network,斯坦福大学网络公司)
Java语言版本
* JDK 1.1.4 Sparkle 宝石 1997-09-12
* JDK 1.1.5 Pumpkin 南瓜 1997-12-13
* JDK 1.1.6 Abigail 阿比盖尔--女子名 1998-04-24
* JDK 1.1.7 Brutus 布鲁图--古罗马政治家和将军 1998-09-28
* JDK 1.1.8 Chelsea 切尔西--城市名 1999-04-08
* J2SE 1.2 Playground 运动场 1998-12-04
* J2SE 1.2.1 none 无 1999-03-30
* J2SE 1.2.2 Cricket 蟋蟀 1999-07-08
* J2SE 1.3 Kestrel 美洲红隼 2000-05-08
* J2SE 1.3.1 Ladybird 瓢虫 2001-05-17
* J2SE 1.4.0 Merlin 灰背隼 2002-02-13
* J2SE 1.4.1 grasshopper 蚱蜢 2002-09-16
* J2SE 1.4.2 Mantis 螳螂 2003-06-26
* JAVASE 5.0 (1.5.0) Tiger 老虎
* JAVASE 5.1 (1.5.1) Dragonfly 蜻蜓
* JAVASE 6.0 (1.6.0) Mustang 野马
* JAVASE 7.0 (1.7.0) Dolphin 海豚
Java语言平台
J2SE(Java 2Platform Standard Edition)标准版
是为开发普通桌面和商务应用程序提供的解决方案,该技术体系是其他两者的基础,可以完成一些桌面应用程序的开发
J2ME(Java 2Platform Micro Edition)小型版
是为开发电子消费产品和嵌入式设备提供的解决方案
J2EE(Java 2Platform Enterprise Edition)企业版
是为开发企业环境下的应用程序提供的一套解决方案,该技术体系中包含的技术如 Servlet、Jsp等,主要针对于Web应用程序开发
Java语言特点
简单性、解释性、面向对象、高性能、分布式处理、多线程、健壮性、动态、结构中立、安全性、开源、跨平台
Java语言的书写格式(约定俗成)
1,大括号要对齐,并且成对写
2,左大括号前面有空格
3,遇到左大括号要缩进,Tab
4,方法和程序块之间加空行让程序看起来清晰
5,并排语句之间加空格,例如for语句
6,运算符两侧加空格
二.Java基础语法
Java语言基础由关键字、标识符、注释、常量和变量、运算符、语句、函数和数组等组成的。
2.1关键字
关键字:被Java语言赋予特定含义的单词
关键字的特点:组成关键字的字母全部小写
注意事项:goto和const作为保留字存在,目前并不使用,类似Editplus这样的高级记事本,针对关键字有特殊的颜色标记,非常直观
2.2标识符
标识符:就是给类,接口,方法,变量等起名字时使用的字符序列
特点:由26个英文字母大小写、数字0-9、符号:_、$组成。
规则:
1. 数字不能开头
2. 不可以使用关键字
3. 不可以包含_、$以外的特殊符号
4. Java中严格区分大小写,起名时为提高阅读性要尽量起的见名知意
5. 一般情况是“_”代表某一类名称,“$”用于分隔主名称与子名称
命名规范:
包名:多单词组成时所有字母都小写。如:xxxyyyzzz
类名接口名:多单词组成时,所有单词的首字母大写。如:XxxYyyZzz
变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词的首字母大写。如:xxxYyyZzz
常量名:所有字母都大写,多单词时每个单词用下划线链接如XXX_YYY_ZZZ
2.3注释
定义:用于解释说明
特点:提高代码的阅读性
格式:
单行注释://注释文字
多行注释:/*注释文字*/
文档注释:/**注释文字*/
2.4常量
常量:不能改变的数值
分类:
整数常量:所有整数
小数常量:所有小数
布尔型常量(boolean):只有:true、false
字符串常量:将一个或者多个字符用双引号括起来的标识
Null常量:只有一个null
进制:
对于整数:
二进制:只有0、1,满2进1
八进制:0—7,满8进1,用0开头标识
十进制:0—9,满10进1
十六进制:0—9、A—F,满16进1,用0x开头标识
原码反码补码
原码
就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
通过一个字节,也就是8个二进制位表示+7和-7
0(符号位) 0000111
1(符号位) 0000111
反码
正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码
正数的补码与其原码相同;负数的补码是在其反码的末位加1。
2.5变量
变量:内存中的一个存储区域,该区域有自己的名称和类型,该区域的数据可以在同一类型范围内不断变化
特点:变量其实就是将不确定的数据进行存储,也就是需要在内存中开辟一个空间
格式:数据类型 变量名= 初始化值
基本数据类型:
整数型
byte 占一个字节 -128到127
short 占两个字 -2^15~2^15-1
int 占四个字节 -2^31~2^31-1
long 占八个字节 -2^63~2^63-1
浮点型
float占四个字节 -3.403E38~3.403E38
double占八个字节-1.798E308~1.798E308
字符型
char占两个字节 0~65535
布尔型boolean
boolean理论上是占八分之一个字节,因为一个开关就可以决定是true和false了,但是java中boolean类型没有明确指定他的大小
变量的注意事项
作用域问题
同一个区域不能使用相同的变量名
初始化值问题
局部变量在使用之前必须赋值
一条语句可以定义几个变量
int a,b,c...;
数据类型转换
默认转换(从小到大): byte,short,char -- int -- long --float -- double
数据类型转换之隐式转换
取值范围小的数据类型与取值范围大的数据类型进行运算,会先将小的数据类型提升为大的,再运算
数据类型转换之强制转换
强制转换的格式:b = (byte)(a + b);
注意事项:如果超出了被赋值的数据类型的取值范围得到的结果会与你期望的结果不同
2.6运算符
运算符:就是对常量和变量进行操作的符号。
运算符的分类:算术运算符,赋值运算符,比较(关系或条件)运算符,逻辑运算符,位运算符,三目(元)运算符
算术运算符:+,-,*,/,%,++,--
注意事项
+号在java中有三种作用,代表正号,做加法运算,字符串的连接符
整数相除只能得到整数。如果想得到小数,必须把数据变化为浮点数类型
/获取的是除法操作的商,%获取的是除法操作的余数
%运算符
当左边的绝对值小于右边绝对值时,结果是左边
当左边的绝对值等于右边或是右边的倍数时,结果是0
当左边的绝对值大于右边绝对值时,结果是余数
%运算符结果的符号只和左边有关系,与右边无关
任何一个正整数%2结果不是0就是1可以用来当作切换条件
赋值运算符:+,+=,-=,*=,/=,%=
比较(关系或条件)运算符:==,!=,>,>=,<,<=
注意事项:
无论你的操作是简单还是复杂,结果是boolean类型。
"=="不能写成"="。
逻辑运算符:&,|,^,!,&&,||
注意事项:
逻辑运算符一般用于连接boolean类型的表达式或者值。
表达式:就是用运算符把常量或者变量连接起来的符合java语法的式子。
算术表达式:a + b
比较表达式:a == b(条件表达式)
&&和&的区别(||和|的区别同理)?
最终结果一样。
&&具有短路效果。左边是false,右边不执行。
&是无论左边是false还是true,右边都会执行
位运算符:&,|,^,~ ,>>,>>>,<<
^的特点:一个数据对另一个数据位异或两次,该数本身不变。
<<:左移 左边最高位丢弃,右边补齐0
>>:右移 最高位是0,左边补齐0;最高为是1,左边补齐1
>>>:无符号右移 无论最高位是0还是1,左边补齐0
最有效率的算出2 * 8的结果2<<8
三目(元)运算符:
格式: (关系表达式) ? 表达式1 : 表达式2;
键盘录入数据格式:
导包
格式: import java.util.Scanner;
位置: 在class上面。
创建键盘录入对象
格式: Scanner sc = new Scanner(System.in);
通过对象获取数据
格式: int x = sc.nextInt();
2.7程序流程控制
选择结构:
if语句:
格式一:
if(条件表达式){
执行语句
}
格式二:
if ( 条件表达式 ){
执行语句;
} else{
执行语句;
}
格式三:
if(条件表达式){
执行语句;
} else if (条件表达式){
执行语句;
}
……
else{
执行语句;
}
循环结构:
while语句格式:
while( 条件表达式 ){
执行语句;
}
do while语句格式:无论条件是否满足,循环体至少执行一次
do{
执行语句;
}while( 条件表达式 );
for语句格式:
for(初始化表达式;循环条件表达式;循环后的操作表达式){
执行语句;(循环体)
}
2.8方法
就是完成特定功能的代码块。在很多语言里面有函数的定义,而在Java中,函数被称为方法。
格式:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {
方法体语句;
return 返回值;
}
说明:
修饰符:目前就用 public static。后面我们再详细的讲解其他的修饰符。
返回值类型:就是功能结果的数据类型。
方法名:符合命名规则即可。方便我们的调用。
参数:
实际参数:就是实际参与运算的。
形式参数;就是方法定义上的,用于接收实际参数的。
参数类型:就是参数的数据类型
参数名:就是变量名
方法体语句:就是完成功能的代码。
return:结束方法的。
返回值:就是功能的结果,由return带给调用者。
注意事项:
方法不调用不执行
方法与方法是平级关系,不能嵌套定义
方法定义的时候参数之间用逗号隔开
方法调用的时候不用在传递数据类型
如果方法有明确的返回值,一定要有return带回一个值
2.9方法的重载
重载:在同一个类中允许存在一个以上的相同名字的方法,方法名相同,参数列表不同。与返回值类型无关。
参数列表不同:
参数的个数不同。
参数的对应的数据类型不同。
2.10数组
数组:数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。数组既可以存储基本数据类型,也可以存储引用数据类型。
一维数组格式:
数据类型[] 数组名 = new 数据类型[数组的长度];
初始化:
动态初始化:只给长度,系统给出默认值,如:int[] arr = new int[3];
静态初始化:给出值,系统决定长度,如:int[] arr = new int[]{1,2,3};简化版:int[] arr = {1,2,3};
二维数组(元素是一维数组的数组)格式:
数据类型[][] 数组名 = new 数据类型[m][n];
数据类型[][] 数组名 = new 数据类型[m][];
数据类型[][] 数组名 = new 数据类型[][]{{...},{...},{...}};
数据类型[][] 数组名 = {{...},{...},{...}};
数组操作常见问题:
数组脚标越界异常(ArrayIndexOutOfBoundsException):访问到数组中的不存在脚标时发生
空指针异常(NullPointerException):当引用型变量没有指向任何实体时,用其操作实体,就会发生异常
2.11内存分配
Java的内存分配主要为五部分:
栈(掌握):存储局部变量
堆(掌握):存储new出来的数组或对象
方法区:面向对象部分讲解
本地方法区:和系统相关
寄存器:给CPU使用
栈内存:用于存储局部变量,当变量所属的作用域一旦结束,所占空间自动释放
堆内存:数组和对象,通过new建立的实例都存放在堆内存中
每一个实体都有内存地址值,实体中的变量都有默认初始化值,整数类型是0,小数类型是0.0,boolean类型是false,char类型是\u0000。如果将数组的引用实体设置为null,也就是实体不再被使用,那么会在不确定的时间内被垃圾回收器回收。
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-