1.java简介
1.1 java分为三个体系
- javaSE(java2SE)(java 2 Platform Standard Edition java平台标准版)
- javaEE(java2EE)(java 2 Platform Enterprise Edition java企业版)
- javaME(java2ME)(java 2 Platform Micor Edition java平台微型版)
javaME是为嵌入式和移动设备提供的平台。
1.2 java语言特性
-
java语言简单
-
java语言是面向对象的
-
java语言是分布式的:
所谓的分布式是指使用java语言开发企业应用开发时,采用分布式技术解决业务逻辑的高并发性、高可用性一套架构方案。Java 语言支持 Internet 应用的开发,在基本的 Java 应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括 URL、URLConnection、Socket、ServerSocket 等。Java 的 RMI(远程方法激活)机制也是开发分布式应用的重要手段。 -
java语言是健壮的
java的强制类型、异常处理、垃圾自动回收装置是java健壮的保证。java的安全监测机制使的java更加具有健壮性。 -
java 语言是安全的(java提高语言及安全性)
java通常被用在网络编程中,java提供安全监测机制,防止被恶意代码攻击。java对通过网络下载的类具有安全防范机制,分配不同的名字空间以防替换本地同名的类名、字节代码检测、并提供安全管理机制,让java类设置安全哨兵。 -
java体系结构中立
java程序(后缀为java )在java平台上被编译成体系结构中立的字节码文件(后缀为class),可以在实现java平台的任意操作系统中运行。这种结构适合异构的网络环境和软件的并发。 -
java语言是可移植的
可移植性来源用体系结构的中立性,java还严格规定了各个基本数据类型的长度。java系统本身具有很强的可移植性,java编译器是java实现的,java的运行环境是用ANSI C 实现的 -
java 是解释性的
java平台被编译成字节码格式,可以在实现了java平台的任何操作系统运行。在运行时,java平台的解释器对这行字节码进行解释执行,执行过程中需要的类在联接阶段被加载到运行环境中 -
java是高性能的
与哪些解释性的高级脚本语言相比,java的的确是高性能的。java运行的速度随着JIT(Just-In-Time)编译器的技术的发展越来越接近C++ -
java语言是多线程的
java中有一些特殊的对象,它必须有Thead类或者子类来创建。 -
java语言是动态的
java语言的设计是为了适应动态变化的环境,java程序需要的类能够被动态的加载运行环境中,也可以通过网络来载入所需要的类,有利于软件的升级。
1.3JVM
JVM由类加载器、运行时数据区、执行引擎。
1.3.1类加载器
类加载器负责加载字节码文件,即java编译后的.class文件
1.3.2运行时数据区
运行时数据区,负责存放.class 文件,分配内存。运行时数据区又分为5部分:
- 方法区:负责存放.class 文件,方法区里有一块区域是运行时常量池,用来存放程序的常量
- 堆:分配给对象内存地址。Java虚拟机中,java堆是所有线程共享的数据
- java虚拟机线:每个线程独享的内存空间
- 本地方法栈:本地native方法独享的内存空间
- 程序计数器:记录线程的执行位置,方便线程切换后再执行。
1.3.2java的垃圾回收算法有哪些
- 复制算法
- 标记-清除算法
- 标记-整理/压缩算法
- 分代算法
参考链接
2.java语法基础
2.1 java标识符
java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
标识符注意以下几点:
- 所有的表示符都应该是以字母(A-Z或a-z),美元($),或者下划线(_)开始
- 首字母之后可以是字母(A-Z或者a-z),美元($),下划线(_)或者数组的任何字符组合
- 关键字不能作为标识符
- 标识符大小写敏感
2.2关键字
-
native
native是在 java.lang.Object 源码中的一个hashCode方法:
public native int hashCode();
native 即 JNI,Java Native Interface
Java平台有个用户和本地C代码进行互操作的API,称为Java Native Interface (Java本地接口)。
参考链接 -
strictfp
参考链接 -
transient
参考链接 -
volatile
参考链接 -
instanceof
参考链接 -
goto
参考链接 -
count
参考链接
3.java基本数据类型
3.1内置数据类型
java语言提供了八种基本数据类型。六种数字类型(四个整数型,两个浮点型)、一种字符型,还有布尔值
3.1.1byte
- byte 数据类型是8位、有符号的,以二进制的补码表示的
- 最小值是-128(-2的7次方)
- 最大值是127(2的7次方)
- 默认值为0
- byte类型用在大型数组中节约空间,主要代替整数,因为byte变量占用的空间是int类型的四分之一
3.1.2 short
- short 数据类型是16位、有符号的以二进制部补码表示的整数
- 最小值-32768(-2的15次方)
- 最大值32767(2的15次方)
- short数据类型也可以像byte那样节省空间,一个short变量是int类型变量 的二分之一
- 默认值为0
3.1.3 int
- int数据类型是32位、有符号的以二进制补码表示的整数
- 最小值-2147483648(-2的31次方)
- 最大值2147483647(2的31次方)
- 一般的整型变量默认为int类型
- 默认值为0
3.1.4 long
- long数据类型是64位、有符号的以二进制补码表示的整数
- 最小值-9,223,372,036,854,775,808(-2^63)
- 最大值9,223,372,036,854,775,807(2^63 -1)
- 这种类型主要使用在比较大的整数系统中
- 默认值为0L
-"L"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,不容易分辩。所以最好大写
3.1.5float
- float数据类型是单精度、32位、符合IEEE 754标准的浮点数
- float在存储大型浮点数组的时候可节省内存空间
- 默认值为0.0f
- 浮点数不能用来表示精确的值,如货币
3.1.6double
- double数据类型是双精度、64位、符合IEEE 754标准的浮点数
- 浮点数的默认类型为double
- double 类型同样不能表示精确的值,如货币
- 默认值是0.0d
3.1.7boolean
- boolean数据表示一位的信息
- 有那个取值:true、false
- 这种类型仅作为一种标志来记录true/flase情况
- 默然值为flase;
3.1.8char
- char 类型是一个单一的16位unicode字符
- 最小值为\u0000(十进制为0)
- 最大值为\uffff(即为65535)
- char数据类型可以存储任意字符
- 默认值:\u0000
3.2引用数据类型
- 在Java中,引用类型的变量非常类似C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这写变量在声明时被指定为一个特定的对象。
- 对象、数组都是引用数据类型
- 所有引用类型默认值为null
- 一个引用变量可以用来引用任何与之兼容的类型
4.包的应用
4.1java基础类库概述
4.1.1 语言包(java.lang)
语言包java.lang提供了语言最基础的类。其中包括Object类、数据类型包裹类(The Data Type Wrapper)、字符串类(String、StringBuffer)、数学类(Math)、系统和运行时类(System、Runtime)、类操作类(Class、ClassLoader)。
4.1.1.1数据类型包裹类(The Data Type Wrapper)
对应java的每一个基本数据类型(primitive data type) 都有一个数据包裹类。每个包裹类都只有一个类型对应的基本数据类型的属性域。如下图。
基本数据类型 | 数据包裹类 |
---|---|
btye | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
chat | Character |
-
每一个包裹类都有一个基本数据类型的变量或者常量生成包裹类的构造方法。
例如:
double x=2.0;
Double a=new Double(x);
Doubel b=new Double(b); -
从java5开始,可以使用自动封箱功能将基本数据类型的变量自动转换为对用的包裹类对象,而不用调用对用的构造方法。
例如:
Double x=2.0;
Double b=-3.0; -
除了Character包裹类,其他每一个包裹类都有一个从字符串转换成对应包裹类对象的构造方法。
例如:
Double x=new Double("-2.0");
Integer i=new Integer(“423”); -
已知字符串,使用valueOf()方法可以将其转换成包裹类对象。
例如:
Integer.valueOf(“123”);//返回表示123的integer类对象
Double.valueOf(“1.22”);//返回表示1.22的Double类对象
Boolean.valueOf(“true”);//返回表示true的Boolean类对象
Character.valueOf(“G”);//返回表示G的Character类对象 -
每一个包裹类都提供相应的方法将包裹类对象转换成基本数据类型数据。
例如:
Integer a=new Integer(3);
int b= a.intValue()//返回int类型数据 -
从java5开始,可以使用自动拆箱功能将包裹类型自动转行成基本数据类型。
例如:
Integer a=new Integer(3);
int b=a; -
Byte、Short、Integer、Long、Float、Double提供了将字符串转换成对应的byte、short、int、long、float、Double的方法;
例如:
Integer.parseInt(“222”);
Float.parseFloat(“22.3”);
4.1.1.2 字符串类
4.1.1.2.1 常量字符串类
java将字符串作为类来实现,而不强制使用字符数组。String 类的字符串对象的值和长度不变。
-
生成一个字符串。
例如:
String string="’;
String string1=“abc”;
String String2=new String("abc); -
常用字符串方法
1.int length()//返回字符串中字符的个数
2.char charAt(int index)//返回index的字符
3.int valueOf(String s)//在接受字符串中查找,如果包含字符串s,则返回第一个匹配的位置下标,否则返回-1.
4.String substring(int begin,int end)//返回接受者序号从begin到end-1的子字符串。
5.String concat(String s)//返回接受者字符串与参数字符串进行连接后的字符串
6.String replace(char oldChar,char newChar)//返回接受者的oldChar替换成newChar后的字符串。注意,接受对象没有被改变。
7.int compareTo(String s)//将接受者对象与参数对象字符串进行比较,如果接受者对象小于s,则返回负数;如果相等,则返回0;如果接受者大于s,则返回一个正数。
8.boolean equles(String s);//接受者对象与参数对象进行比较,如何包含的字符串个数相等且对应的字符相等,则返回true,否则返回false。
9.String trim();//返回将接受者字符串两端的空字符串都去掉的字符串。
10.String toLowerCase()//返回接受字符串中的字符都转行成小写的字符串。
11.String toUpperCase()//返回接受字符串中的字符都转换成大写的字符串。
4.1.1.2.2 变量字符串类
StringBuffer类对象是可以被修改的字符串,与String类的对象比较,执行效率低一些。注意StringBuffer类的方法不能被用于String类的对象。
-
生成StringBuffer对象
new StringBuffer();//生成容量为16的空字符串
new StringBuffer(int size);//生成容量为size的空字符串
new StringBuffer(String aString);//生成aString的一个备份,其长度为其长度+16 -
常用方法:
1.int length();//返回字符串对象长度
2.int capacity();//返回字符串对象的容量
3.void ensureCapacity(int size);//设置字符串对象的容量
4.void setLength(int len);//设置字符串长度。如果len的值小于当前字符串的长度,则尾部被截掉。
5.char charAt(int index);//返回index处的字符
6.void setCharAt(int index,char c);//将index的字符转换成c
7.void getChars(int start,int end,char [] charArray,int newStart);//将接受者对象start位置到end-1位置的字符串复制到字符数组charArray中,从newStart开始。
8.StringBuffer reverse();//将接受者字符串反转
9.StringBuffer insert(int index,Object o);//o插入到index位置
10.StringBuffer append(Object o);//将连接到接受者的末尾。
5. Throwable
Throwable有两个子类,Error和Exception。其中Error是错误,对于所有的编译时期的错误以及系统错误都是通过Error抛出的。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时,如Java虚拟机运行错误(Virtual MachineError)、类定义错误(NoClassDefFoundError)等。
6.Swing
6.1Swing介绍
- Swing是一个为java设计的GUI包
- Swing是java基础类的一部分
- Swing包括了图形用户界面GUI的器件
6.2Swing的构件
6.2.1 JFrame
- JFrame()创建一个无标题的窗口
- JFrame(String title)创建一个标题为title的窗口
- 方法:
setVisible(true) 使得窗口可b见。
setSize(宽,高) 设置窗口尺寸。
pack() 窗口的自适应。
setBackground(Color c) 设置窗口背景色。
setForeground(color c) 设置窗口前景颜色。
6.2.2 Label类
- JLabel()创建空标签
- JLabel(String Text):创建内容为text的标签
- JLabel(String text,int align):创建内容为text的标签,对齐方式为align的标签,JLabel.LEFT,JLabel.RIGHT、JLabel.CENTER
- 设置标签字体文字:
Font(Stirng name,int style,int size)创建一个指定字体对象 - 设置标签文字颜色(Color 类)
Color(int red,int green,int blue)
setForeground(Color c)
6.2.3 JButton
- JButton():创建一个无显示文字的按钮
- JButton(String text):创建一个显示文字为text的按钮
6.2.4 JPanel
- JPanel是一个中间容器,用于容纳其他组件
- 构造方法 JPanel() 创建一个空面板
- JPanel添加组件的方法 add(组件) 向面板中添加组件
6.2.5 布局管理器
- FlowLayout(流式布局)
- BorderLayout(边界布局)
- c(网格布局)
- CardLayout(卡片布局)
- GridBagLayout(网格包布局)