Java基础语法
1.计算机语言和java 简介
2.Jdk安装与环境搭建、编写HelloWorld
3.标识符与关键字
4.Java的数据类型
5.变量和常量
6.运算符与表达式
7.流程控制(条件语句、循环语句、流程控制中的Break和continue)
8.数组
9.枚举
Java进阶
封装
1.从抽象到类
2.构造方法与对象的创建
3.参数传值
4.实例成员和类成员
5.方法重载
6.this关键字
7.包
8.import语句
9.访问权限
继承
1.子类与父类
2.子类的继承性
3.成员变量的隐藏和方法重写
4.super关键字
5.对象的上转型对象
6.继承与多态
7.abstract类和abstract方法
多态
1.接口的声明与使用
2.接口变量与回调机制
3.接口与多态
4.abstact类与接口的比较
Jave深入
1.内部类与异常类
2.Java常用实用类
3.输入输出流
4.集合与泛型
5.Java多线程机制
初识java
Java诞生
在Java诞生之前已经出现了许多优秀的编程语言,如大家所熟悉的C语言和C++语言等,那么是什么原因导致了Java的诞生呢?Java语言相对于其他语言来说到底又有着怎样的特殊优势呢?
Java语言相对于其他语言的最大优势就是所谓的平台无关性,即跨平台性,这也是Java最初风靡全球的主要原因。
无论哪种变编程语言编写的应用程序都需要经过操作系统和处理器来完成程序的运行,因此这里所指的平台是由操作系统(OS)和处理器(CPU)所构成。与平台无关是指软件的运行不因操作系统、处理器的变化导致发生无法运行或者出现运行错误。
平台最终识别并且执行的是一种由0和1组成的序列代码,我们称之为机器指令。相同的CPU和不同的操作系统所形成的平台的机器指令可能也是不同的,因此,每种平台都会形成自己独特的机器指令。例如,某个平台可能用8位序列代码10001111表示一次加法操作,以10100000表示一次减法操作,而另外一个平台可能用8位序列代码10101010表示一次加法操作,以10010011表示一次减法操作。
c+
+
Java
Java语言和其他语言相比,最大的优势就是它的平台无关性,这是因为Java可以在平台之上再提供一个Java运行环境,该Java运行环境由Java虚拟机(JVM)、类库以及一些核心文件组成。Java虚拟机的核心是所谓的字节码指令,即可以被Java虚拟机直接识别、执行的一种由0和1组成的序列代码。字节码并不是机器指令,因为它不和特定的平台相关,不能被任何平台直接识别和执行。Java针对不同平台提供的Java虚拟机的字节码指令都是相同的,如所有的虚拟机都将11110000识别、执行为加法操作。
JDK的安装和配置
1、下载并且安装JDK
2、配置系统环境变量
Hello world
简单:如果同学们学过C++语言,就会感觉Java眼熟,因为Java中许多基本语句的语法和C++是一样的,像常用的循环语句、控制语句等和C++几乎相同。需要注意的是,Java和C++时两种完全不同的语言,各有各的优势,将会长期并存下去。如果从语言的简单性方面来看,Java要逼C++简单,C++中许多容易混淆的感念,或者被Java弃之不用了,或者以一种更清楚更容易理解的方法实现,例如Java中不再有指针的概念。
面向对象:基于对象的编程更加符合人的思维模式,使人们更容易解决复杂的问题,Java就是一种面向对象的编程语言
多线程:Java的特点之一就是内置对多线程的支持。多线程允许同时完成多个任务。实际上多线程使人产生多个任务在同时执行的错觉,因为目前的计算机的处理器在同一时刻只能执行一个线程,但处理器可以在不同的线程之间快速的切换,由于处理器的速度非常快,远远超过了人接收信息的速度,所以给人的感觉好像是多个线程在同时执行。C++没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序的设计。
安全:当准备从网络上下载一个程序时,最大的担心是程序中含有恶意的代码,会试图读取或者删除本地计算机上的一些重要文件。当使用支持Java的浏览器时,可以放心的运行Java Applet程序,不必担心病毒的感染。Java Applet程序由浏览器内置的Java运行环境负责解释执行,浏览器内置的Java运行环境不允许Java Applet程序访问当前浏览器上下文环境以外的其他部分。
动态:在通过了后面的学习之后,同学们就会发现Java程序的基本组成单元就是类,有些类是自己编写的,有些是从类库中引入的,而类又是运行时动态装载的,这就使得Java可以在分布式环境中动态的维护程序以及类库。而C/C++编译时就将函数库或者类库中被使用的函数、类同时生成机器码,那么每当类库升级以后,如果想要具有类库提供的新功能,程序就必须重新修改和编译
标识符和关键字
标识符:用来标识类名、变量名、方法名、类型名、数组名、文件名等等的有效字符序列称之为标识符。简单的说,标识符就是一个名字。以下是Java关于标识符的语法规则:
1、标识符由字母、下划线、美元符号和数字组成,长度不受限制。
2、标识符的第一个字符不能是数字字符。
3、标识符不能是关键字。
4、标识符不能是true、false和null(尽管true、false和null不是Java的关键字)
例如:Hello_java、Hello_12$、$23Boy
需要特别注意的是,标识符中的字母是区分大小写的,hello和Hello是不同的标识符。
Java语言使用Unicode标准字符集,Unicode字符集由UNICODE协会管理并接受其技术上的修改,最多可以识别65563个字符,Unicode字符集的前128个字符刚好是ASCII码表。Unicode字符集还不能覆盖全部历史上的文字,但大部分国家的“字母表”的字母都是Unicode字符集中的一个字符,如汉字中的“你”字就是Unicode字符集中的第20320个字符。Java所谓的字母包括了世界上大部分语言中的“字母表”,因此Java所使用的字母不仅包括通常的拉丁字母a,b,c等,也包括汉语中的汉字、日文的片假名和平假名、朝鲜文、俄文、希腊字母以及其他许多语言中的文字。
关键字:关键字就是Java语言中已经被赋予了特定意义的一些单词。不可以把关键字作为标识符来用,以下就是Java的关键字:
访问控制
private 私有的 protected 受保护的 public 公共的
类、方法和变量修饰符:
abstract 声明抽象 class 类 extends 扩允,继承 final 终极,不可改变的 implements 实现
interface 接口 native 本地 new 创建 static 静态 strictfp 严格,精准
synchronized 线程,同步 transient 短暂 volatile 易失
程序控制语句:
break 跳出循环 continue 继续 return 返回 do 运行 while 循环 if 如果
else 反之 for 循环 instanceof 实例 switch 开关
case 返回开关里的结果 default 默认
错误处理:
try 捕获异常 catch 处理异常 finally 有没有异常都执行 throw 抛出一个异常对象
throws 声明一个异常可能被抛出 assert 断言
包相关:
import 引入 package 包
基本类型:
boolean 布尔型 byte 字节型 char 字符型 double 双精度 float 浮点
int 整型 long 长整型 short 短整型 null 空 true 真
false 假 enum 枚举
变量引用:
super 父类,超类 this 本类 void 无返回值
关键字(51)+保留字(const,goto)共53个
基本数据类型
逻辑类型:常量:true,false。
变量:使用关键字boolean来声明逻辑变量,声明时也可以赋给初值,
例如:boolean x,ok=true,关闭=false;
整数类型:1.int 型
常量:123,6000(十进制),077(八进制),0x3ABC(十六进制)。
变量:使用关键字int来声明int型变量,声明时也可以赋给初值,
例如:int x= 12,平均=9898,jiafei;
对于int型变量,内存分配给4个字节(byte),占32位。
2.byte型
常量:Java中不存在byte型常量的表示法,但可以把一定范围内的int型常量赋值给byte型变量。
变量:使用关键字byte来声明byte 型变量
例如:byte x= -12,tom=28,漂亮9;
对于byte型内存分配给1个字节,占8位。
3 .short 型
常量:和byte型类似,Java中也不存在short型常量的表示法,但可以把一定范围内的int型常量赋值给short型变量。
变量:使用关键字short来声明short型变量
例如:short x=12,y=1234;
对于short型变量,内存分配给2个字节,占16位。
4. long 型
常量:long型常量用后缀L来表示,例如108L(十进制),07123L(八进制)、0x3ABCL(十六进制) 。
变量:使用关键字long来声明long型变量,
例如:long width=12L,height=2005L,length;
对于long型变量,内存分配给8个字节,占64位。
字符类型:1. 常量:‘A’,‘b’,‘?’,‘!’,‘9’,‘好’,‘\t’,‘き’,‘モ’等,即用单引号扩起的Unicode表中的一个字符。
2. 变量:使用关键字char来声明char型变量,
例如:char ch=‘A’,home=‘家’,handsome=‘酷’;
对于char型变量,内存分配给2个字节,占16位。
3. 转意字符常量:有些字符(如回车符)不能通过键盘输入到字符串或程序中,就需要使用转意字符常量,
例如:\n(换行),\b(退格),\t(水平制表), \‘(单引号),\“(双引号),\(反斜线)等。
4. 要观察一个字符在Unicode表中的顺序位置,可以使用int型显示转换,如(int)'a'或int p='a'。
5. 如果要得到一个0~65536之间的数所代表的Unicode表中相应位置上的字符必须使用char型显示转换。
浮点类型:1. float型
常量:453.5439f,21379.987F,231.0f(小数表示法),2e40f(2乘10的40次方,指数表示法)。需要特别注意的是:常量后面必须要有后缀“f”或“F”。
变量:使用关键字float来声明float型变量,
例如:float x=22.76f,tom=1234.987f,weight=1e-12F;
精度:float变量在存储float型数据时保留8位有效数字,实际精度取决于具体数值。
对于float型变量,内存分配给4个字节,占32位。
2. double 型
常量:2389.539d,2318908.987,0.05(小数表示法),1e-90(1乘10的-90次方,指数表示法)。对于double常量,后面可以有后缀“d”或“D”,但允许省略该后缀。
变量:使用关键字double来声明double型变量,
例如:double height=23.345,width=34.56D,length=1e12;
对于double型变量,内存分配给8个字节,占64位。
精度:double变量在存储double型数据时保留16位有效数字,实际精度取决于具体数值。
数据转换:Java中数据的基本类型(不包括逻辑类型)按精度从“低”到“高”排列:
byte short char int long float double
★当把级别低的变量的值赋给级别高的变量时,系统自动完成数据类型的转换。例如:
float x=100;
★当把级别高的变量的值赋给级别低的变量时,必须使用显示类型转换运算。显示转换的格式:(类型名)要转换的值;
例如
int x=(int)34.89;
★当把一个int型常量赋值给一个byte和short型变量时,不可以超出这些变量的取值范围,否则必须进行类型转换运算;例如,常量128的属于int型常量,超出byte变量的取值范围,如果赋值给byte型变量,必须进行byte类型转换运算(将导致精度的损失),如下所示:
byte a=(byte)128;
★另外一个常见的错误就是把一个double型常量赋值给一个float型变量时没有进行强制转换,如下所示:
float x=12.4;
输入和输出数据:Java中数据的基本类型(不包括逻辑类型)按精度从“低”到“高”排列:
byte short char int long float double
★当把级别低的变量的值赋给级别高的变量时,系统自动完成数据类型的转换。例如:
float x=100;
★当把级别高的变量的值赋给级别低的变量时,必须使用显示类型转换运算。显示转换的格式:(类型名)要转换的值;
例如
int x=(int)34.89;
★当把一个int型常量赋值给一个byte和short型变量时,不可以超出这些变量的取值范围,否则必须进行类型转换运算;例如,常量128的属于int型常量,超出byte变量的取值范围,如果赋值给byte型变量,必须进行byte类型转换运算(将导致精度的损失),如下所示:
byte a=(byte)128;
★另外一个常见的错误就是把一个double型常量赋值给一个float型变量时没有进行强制转换,如下所示:
float x=12.4;