java 基础
Posted aiqixiansheng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 基础相关的知识,希望对你有一定的参考价值。
一、基本语法:
1 变量。大小写敏感。即使表达的是同一个意思,如果大小写不一样,在计算机里面就是不一样
2 类名。 首字母要大写,如果由多个字母构成,每个单词的首字母都要大写
3 方法名。 方法名的首字母需小写,如果有多单词构成,第一个单词小写,后面的则是大写
4 源
文件名和类名必须一样
5 有main方法作为入口
二、java标识符
变量名、方法名,类名统称为标识符
非法的标识符:用关键字做为标识符,以数字开头,或者是横线开头
三、修饰符
访问
default (什么都不写,同一个包内可见)
public (权限最大)
protected (不能修饰类 内部类除外,同一个包内可见)。
private (同一个类内可见)
非访问
final 被 final 修饰的实例变量必须显式指定初始值
abstract 抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充。
static
静态变量:
关键字用来声明独立于对象的静态变量,
无论一个类实例化多少对象,
它的静态变量只有一份拷贝。
静态变量也被称为类变量。
局部变量不能被声明为 static 变量。
静态方法:
关键字用来声明独立于对象的静态方法。
静态方法不能使用类的非静态变量。
静态方法从参数列表得到数据,然后计算这些数据
synchronized 关键字声明的方法同一时间只能被一个线程访问
volatile 修饰符修饰的成员变量在每次被线程访问时,
都强制从共享内存中重新读取该成员变量的值。
而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。
这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
四、java变量
1 局部变量 方法体之内的变量 局部变量不能被声明为 static 变量。
2 类变量(static 静态变量)
3 成员变量(非静态变量)方法体之外的变量
4 变量必须在使用前声明。
五、java基本类型
boolean(1位) byte(8位) short(16位)
char(16位) int(32位) float(32位)
double(64位) long(64位)
当高位向低位转换时,如果超出地位的最高数位,就会丢失精度。
六、Java 循环结构
for
while
do...while
七、条件语句(逻辑语句)
if...else...
if...else if...else
switch(expression){
case value :
//语句
break; //可选
case value :
//语句
break; //可选
//你可以有任意数量的case语句
default : //可选
//语句
}
expression:
byte、short、int 或者 char。
从 Java SE 7 开始,
switch 支持字符串 String 类型了,
同时 case 标签必须为字符串常量或字面量。
八。java常用类
Number 类
所有的包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类 Number 的子类。
Math 类
包含了用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数。
Character 类
Character 类用于对单个字符进行操作。
String 类
字符串广泛应用 在Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。
String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了
StringBuffer 和 StringBuilder 类
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
Arrays 类
java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。
给数组赋值:通过 fill 方法。
对数组排序:通过 sort 方法,按升序。
比较数组:通过 equals 方法比较数组中元素值是否相等。
查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作
Date 类
java.util 包提供了Date 类来封装当前的日期和时间。
SimpleDateFormat类
是一个以语言环境敏感的方式来格式化和分析日期的类。
SimpleDateFormat 允许你选择任何用户自定义日期时间格式来运行。
Calendar类
设置和获取日期数据的特定部分,Calendar类是一个抽象类,在实际使用时实现特定的子类的对象。
GregorianCalendar类
Calendar类实现了公历日历,GregorianCalendar是Calendar类的一个具体实现。
九、Java 正则表达式
正则表达式定义了字符串的模式。
正则表达式可以用来搜索、编辑或处理文本。
正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
java.util.regex 包主要包括以下三个类:
Pattern 类 对象是一个正则表达式的编译表示
Matcher 类 Matcher 对象是对输入字符串进行解释和匹配操作的引擎。
PatternSyntaxException 是一个非强制异常类,它表示一个正则表达式模式中的语法错误。
捕获组
捕获组是把多个字符当一个单独单元进行处理的方法,它通过对括号内的字符分组来创建。
十、Java 异常处理
异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。
Throwable
Exception
IOException
RuntimeException
Error 用来指示运行时环境发生的错误
throws/throw 关键字:
throws 关键字来声明。throws 关键字放在方法签名的尾部,声明该方法内可能会抛出一个异常
throw 放在方法体内部 声明该方法内部的某处会抛出异常。
finally关键字:
无论是否发生异常,finally里面的代码是必须执行的。
十一 java中的继承
通过 extends 来实现,是类和类中的一种关系 java 支持单根继承
优点,可以提高代码的复用性
十二 java中的Override(重写)与Overload(重载)
Override 子类对父类的方法重写
Overload 类内部的方法重载,主要通过方法签名进行。(方法名字相同,而参数不同)
Super 调用父类的方法
十三 java中的多态
多态是发生在运行时。一个动作可以由不同的对象来实现。
优点:提高扩展性,简化灵活
多态存在的三个必要条件
继承
重写
父类引用指向子类对象
多态的实现方式
重写
接口
抽象类和抽象方法
十四 java中的抽象类(让子类去自定义实现一些方法,实现多态)
所谓的抽象类,就是类的顶层抽象,抽象类可以被继承,但是不可以实列化
总结:
1 不能实列化
2 不一定含有抽象方法,但是含抽象方法的,一定是抽象类
3 抽象方法只是声明,没有方法体
4 构造方法,类方法,不能声明为抽象方法
5 子类必须实现父类的抽象方法,否则子类也是抽象类
十五 java中的封装
把实现细节给隐藏起来
优点:
1 减少耦合
2 内部可以自由实现
3 对成员变量的保护
4 实现细节给隐藏起来
十六 java中的接口(interface)是一个抽象类型,是抽象方法的集合
接口与类相似点:
可以有多个方法,可以编译成.class文件
接口与类的区别:
接口不能实列化,没有构造方法,所有的方法都是抽象的,不能含有成员变量,static和final变量除外
只能被实现,不能被继承,接口支持多继承
十七 Java 多线程
进程:包含了多个线程。
线程的生命周期:
新建状态:new 一个对象
就绪状态:调用了start()
运行状态:调用了run()
阻塞状态: 调用了sleep(睡眠)、suspend(挂起)等方法
等待阻塞:运行状态中的线程执行 wait() 方法,使线程进入到等待阻塞状态。
同步阻塞:线程在获取 synchronized 同步锁失败(因为同步锁被其他线程占用)。
其他阻塞:通过调用线程的 sleep() 或 join() 发出了 I/O 请求时,线程就会进入到阻塞状态。当sleep() 状态超时,join() 等待线程终止或超时,或者 I/O 处理完毕,线程重新转入就绪状态。
死亡状态:
一个运行状态的线程完成任务或者其他终止条件发生时,该线程就切换到终止状态。
十八 java中常用的集合
Collection 存储一个元素
List
ArrayList
LinkedList
Set
HashSet
LinkedHashSet
Set和List的区别:1、Set 接口实例存储的是无序的,不重复的数据。
List 接口实例存储的是有序的,可以重复的元素。
2、Set 检索效率低,删除和插入的效率高(基于Hans值和链表实现)
3、List 的检索效率高,删除和插入的效率低(基于数组实现)
Map 存储键值对(key/value)
HashMap
LinkedHashMap
Hashtable
总结
Java集合框架为程序员提供了预先包装的数据结构和算法来操纵他们。
集合是一个对象,可容纳其他对象的引用。集合接口声明对每一种类型的集合可以执行的操作。
集合框架的类和接口均在java.util包中。
十九 java中的泛型(JDK 5 中引入的一个新特性)
泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。
下面是定义泛型方法的规则:
1、所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前(在下面例子中的<E>)。
2、每一个类型参数声明部分包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。
3、类型参数能被用来声明返回值类型,并且能作为泛型方法得到的实际参数类型的占位符。
4、泛型方法体的声明和其他方法一样。注意类型参数只能代表引用型类型,不能是原始类型(像int,double,char的等)。
1、泛型方法
public <E,T> boolean compareObject(E e,T t)
有界的类型参数:
后跟extends关键字,最后紧跟它的上界
public static <T extends Comparable<T>> T maximum(T x, T y, T z)
2、泛型类
泛型类的声明和非泛型类的声明类似,除了在类名后面添加了类型参数声明部分。
3、类型通配符
List<?>
类型通配符下限通过形如 List<? super Number>来定义,
表示类型只能接受Number(最低限度)及其三层父类类型,如Objec类型的实例
二十 Java 序列化
Java 提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,
该字节序列包括该对象的数据、有关对象的类型的信息和存储在对象中数据的类型。
二十一 Java 网络编程
网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。
java.net 包中提供了两种常见的网络协议的支持:
TCP:TCP 是传输控制协议的缩写,它保障了两个应用程序之间的可靠通信。通常用于互联网协议,被称 TCP / IP。
UDP:UDP 是用户数据报协议的缩写,一个无连接的协议。提供了应用程序之间要发送的数据的数据包
以上是关于java 基础的主要内容,如果未能解决你的问题,请参考以下文章