java基础知识小总结

在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类。
此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程序的文件名就可以随意命名了。

文档注释,是以单斜线加两个星形标记( /**)开头,并以一个星形标记加单斜线( */)结束。用这种方法注释的内容会被解释成程序的正式文档,并能包含进如 javadoc之类的工具生成的文档里,用以说明该程序的层次结构及其方法。

Java 把整数常量的数据类型均视为 int 型,因此,如果在程序中使用了超过 2147483647 这个大小的常量,编译时将发生错误
要解决这个问题,只要在整数常量后面加上一个大写的“ L”即可,此举代表该常量是long 类型的整数常量。
最大值的代码是 MAX_VALUE,最小值是 MIN_VALUE。如果要取用某个类型的最大值或最小值,只要在这些代码之前,加上它们所属的类的全名即可。

\f 换页 \\ 反斜线
\b 倒退一格 \‘ 单引号
\r 归位 \" 双引号

在程序中已经定义好了数据类型的变量,若是想用另一种数据类型表示时, Java
会在下列的条件皆成立时,自动做数据类型的转换:
 1、 转换前的数据类型与转换后的类型兼容。
 2、 转换后的数据类型的表示范围比转换前的类型大

若是将一个超出该变量可表示范围的值赋值给这个变量时,这种转换称为缩小转换。由于在转换的过程中可能会丢失数据的精确度, Java 并不会自动做这些类型的转换,此时就必须要做强制性的转换。

+3 ; // 表示正 3
~a ; // 表示取 a 的补码

优先级 运算符 类 结合性
1 () 括号运算符 由左至右
1 [] 方括号运算符 由左至右
2 !、 +(正号)、 -(负号) 一元运算符 由右至左
2 ~ 位逻辑运算符 由右至左
2 ++、 -- 递增与递减运算符 由右至左
3 *、 /、 % 算术运算符 由左至右
4 +、 - 算术运算符 由左至右
5 <<、 >> 位左移、右移运算符 由左至右
6 >、 >=、 <、 <= 关系运算符 由左至右
7 ==、 != 关系运算符 由左至右
8 &(位运算符 AND) 位逻辑运算符 由左至右
9 ^(位运算符号 XOR) 位逻辑运算符 由左至右
10 |(位运算符号 OR) 位逻辑运算符 由左至右
11 && 逻辑运算符 由左至右
12 || 逻辑运算符 由左至右
13 ?: 条件运算符 由右至左
14 = 赋值运算符 由右至左

1、 占用字节较少的类型转换成占用字节较多的类型。
2、 字符类型会转换成 int 类型。
3、 int 类型会转换成 float 类型。
4、 表达式中若某个操作数的类型为 double,则另一个操作数字也会转换成 double
类型。
5、 布尔类型不能转换成其它类型。

在 switch 语句里的选择值只能是字符或是常量。

1、 第一次进入 for 循环时,为循环控制变量赋起始值。
2、 根据判断条件的内容检查是否要继续执行循环,当判断条件值为真( true)
时,继续执行循环主体内的语句;判断条件值为假( false)时,则会跳出循
环,执行其他语句。
3、 执行完循环主体内的语句后,循环控制变量会根据增减量的要求,更改循环
控制变量的值,再回到步骤 2 重新判断是否继续执行循环。

System.arrayCopy(source,0,dest,0,x):语句的意思就是:复制源数组从下标 0 开始
的 x 个元素到目标数组,从目标数组的下标 0 所对应的位置开始存取。
Arrays.sort(数组名 )为数组排序的操作
值得一提的是 Java 允许二维数组中每行的元素个数均不相同,这点与一般的程序
语言是不同的。
“匿名对象”,顾名思义,就是没有明确的声明的对象。读者也可以简单的理解
为只使用一次的对象,即没有任何一个具体的对象名称引用它。

有两种方式可用于对象间的比较,它们是“ = =”运算符与 equals()方法,“ = =”
操作符用于比较两个对象的内存地址值是否相等, equals()方法用于比较两个对象的内
容是否一致。
this 表示当前对象,而
所谓的当前对象就是指调用类中方法或属性的那个对象。
如果在程序中想用某一构造方法调用另一构造方法,可以用 this 来实现,具体的
调用形式如下:
 this() ;
在类中的所有方法里,只有构造方法是被优先调用的,所以使用 this 调用构造方法必须也只能放在构造方法的第一行一个类可以使用不包含在任何方法体中的静态代码块,当类被载入时,静态代码块被执行,且只执行一次,静态代码块经常用来进行类属性的初始化,这部分内容你可以多看一些java视频教程,可以更好的理解。

构造方法虽然被私有了,但并不一定是说此类不能产生实例化对象,只是产生这个实例化对象的位置有所变化,即只能在本类中产生实例化对象。

内部类在声明时,会破坏程序的结构,在开发中往往不建议读者去使用。

用 static 也可以
声明内部类,用 static 声明的内部类则变成外部类,但是用 static 声明的内部类不能访
问非 static 的外部类属性。
内部类也可以通过创建对象从外部类之外被调用,只要将内部类声明为 public 即

在java视频的第一部分已经提到过, Java 支持三种形式的注释。前两种是// 和/*… */。
第三种方式被称为文档注释。它以“ /**”开始,以“ */”标志结束。文档注释提供将
程序信息嵌入到程序中的功能。开发者可以使用 javadoc 工具将信息取出,然后转换
为 HTML 文件。

子类对象在实例化时会默认先去调用父类中的构造方法,之后再
调用本类中的相应构造方法。
用 super 调用父类中的构造方法,只能放在程序的第一行。

在抽象
类中声明构造方法后,在子类中 必须明确调用
如果一个类没
有使用 extends 关键字明确标识继承另外一个类,那么这个类就默认继承 Object 类。

接口里的数据成员必须初始化,且数据成员均为常量。
2、 接口里的方法必须全部声明为 abstract,也就是说,接口不能像抽象类一样保有一
般的方法,而必须全部是“抽象方法”。

接口与一般类一样,本身也具有数据成员与方法,但数据成员一定要赋初值,且
此值将不能再更改

接口是 java 实现多继承的一种机制,一个类只能继承一个父类,但如果需要一
个类继承多个抽象方法的话,就明显无法实现,所以就出现了接口的概念。一个类只
可以继承一个父类,但却可以实现多个接口。
同样的,接口的扩展(或继承)也是通过关键字 extends 来实现的。有趣的是,
一个接口可以继承多个接口
父类用其本身类实例化自己的对
象,但它并不知道谁是自己的子类,那肯定在转换的时候会出现错误

可以用 instanceof 判断一个类是否实现了某个接口,也可以用它来判断一个实
例对象是否属于一个类。

前面已经介绍过 Object 是所有类的父类,其中的 toString()方法是需要被复写的,
如果读者去查 JDK 手册,会发现在 Object 类中有一个 equals 方法,此方法用于比较
对象是否相等,而且此方法必须被复写

接口是无法直接实例化
的,因为接口中没有构造方法,但是却可以根据对象多态性的概念,通过接口的子类
对其进行实例化

异常可分为两大类: java.lang.Exception 类与 java.lang.Error 类。这两个类均继承
自 java.lang.Throwable 类。

如果在类的方法中用 throws 抛出一个异常,则在
调用它的地方就必须明确地用 try-catch 来捕捉。

jar 命令是 Java 中提供的一个非常有用的命令,可以用来对大量的类(.class 文件)
进行压缩,然后存为.jar 文件。

class 类名称 extends Thread // 从 Thread 类扩展出子类
{
修饰符 run(){ // 复写 Thread 类里的 run()方法
// 以线程处理的程序;
}
}
用start()可以启动
也可通过implements Runnable实现
在 Runnable 接口中并没有 start()方法,所以一个类实现了
Runnable 接口也必须用 Thread 类中的 start()方法来启动多线程。
Thread 类实现了 Runnable 接口,也就是说 Thread 类也是
Runnable 接口的一个子类。

一个类继承 Thread 类之后,这个类的对象无论调用
多少次 start()方法,结果都只有一个线程在运行。

new Thread(t).start();//其中t是一个实现了Runnable接口的类
这样连续调用多次之后会产生多个共享数据的线程

任何线程一般具有五种状态,即创建、就绪、运行、阻塞、终止。
允许两个 Thread 对象有相同的名字,但为了清晰,应该尽量避免这种情况的发生。
如果程序并没有为线程指定名称,则系统会自动的为线程分配一个名称

可以通过 isAlive()方法来测试线程是否已经启动而且仍然在启动。

如果某个线程对
象在启动(调用 start()方法)之前调用了 setDaemon(true)方法,这个线程就变成了后
台线程。
进程中只有后台线程运行时,进程就会结束。
join()方法用来强制某一线程运行(强制运行完后再运行后面的线程)

在 Thread 类之中可以发现有一个名为 sleep(long millis)的静态方法,此方法用于
线程的休眠。

当一个线程运行时,另一个线程可以调用对应的 Thread 对象的 interrupt()方法来
中断它。

也可以用 Thread 对象调用 isInterrupted()方法来检查每个线程的中断状态。

一旦被打上interrupt状态以后,线程执行到可中断阻塞(有些中断是不可以被中断的)
的时候,就会抛出异常并且结束当前的操作,然后重置状态。

synchronized(对象)
{
 需要同步的代码 ;
}
需要注意的是,同步监视器一般可以由任何对象充当,只要其唯一恒定就可以,
通常推荐使用可能被并发访问的共享资源充当同步监视器。

除了可以对代码块进行同步外,也可以对函数实现同步,只要在需要同步的函数
定义前加上 synchronized 关键字即可。

wait()方法使当前线程等待,释放对该同步器的锁定。
    notify()方法唤醒该同步器上等待的单个线程,对于唤醒的选择是任意的。
    notifyAll()唤醒全部等待的线程。

控制线程生命周期的方法有很多种,如: suspend 方法、 resume 方法和 stop 方法。
虽然 stop 能够避免死锁的发生,但是也有其它的不足:如果一个线程正在操作共
享数据段,操作过程没有完成就被“ stop”了的话,将会导致数据的不完整性。

图9-11线程的生命周期

通过控制 run 方法中循环条件的方式来结束一个线程的方法是推荐读
者使用的,这也是实际中用的最多的方法。

StringBuffer 类用于内容可以改变的字符串,可以将其它各种类型的数据增加、插
入到字符串中,也可以转置字符串中原来的内容。

在实际开发中,如果需要频繁改变字符串的内容就需要考虑用 StringBuffer 类实
现,因为其内容可以改变,所以执行性能会比 String 类更高。

exit(int status)方法,提前终止虚拟机的运行。对于发生了异常情况而想终止虚拟
机的运行,传递一个非零值作为参数。

CurrentTimeMillis 方法返回自 1970 年 1 月 1 日 0 点 0 分 0 秒起至今的以毫秒为单
位的时间,这是一个 long 类型的大数值。

Runtime 类封装了 Java 命令本身的运行进程,其中的许多方法与 System 中的方法
重复。不能直接创建 Runtime 实例,但可以通过静态方法 Runtime.getRuntime 获得正
在运行的 Runtime 对象的引用。

getInputStream()方法可以得到一个输入流,客户端的 Socket 对象上的 getInputStream()
方法得到的输入流其实就是从服务器端发回的数据流。 getOutputStream()方法得到一个
输出流,客户端 Socket 对象上的 getOutputStream()方法返回的输出流就是将要发送到
服务器端的数据流。

Sockets 有两种主要的操作方式:面向连接的和无连接的。

无连接的操作使用数据报协议。一个数据报是一个独立的单元,它包含了所有的
这次投递的信息。

面向连接的操作使用 TCP 协议。一个这个模式下的 socket 必须在发送数据之前与
目的地的 socket 取得一个连接。一旦连接建立了, sockets 就可以使用一个流接口

本文转自:http://blog.csdn.net/xuejiaqiang88/article/details/43700073

时间: 2024-10-02 00:30:25

java基础知识小总结的相关文章

java基础知识小小结

java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程序的文件名就可以随意命名了. 文档注释,是以单斜线加两个星形标记( /**)开头,并以一个星形标记加单斜线( */)结束.用这种方法注释的内容会被解释成程序的正式文档,并能包含进如 javadoc之类的工具生成的文档里,用以说明该程序的层次结构及其方法. Java 把整数常量的数据类型均视为 int

JAVA基础知识|小知识点

1.强烈建议,不使用char类型 那么,到底为什么java里不推荐使用char类型呢?其实,1个java的char字符并不完全等于一个unicode的字符.char采用的UCS-2编码,是一种淘汰的UTF-16编码,编码方式最多有65536种,远远少于当今Unicode拥有11万字符的需求.java只好对后来新增的Unicode字符用2个char拼出1个Unicode字符.导致String中char的数量不等于unicode字符的数量. 然而,大家都知道,char在Oracle中,是固定宽度的字

JAVA基础知识整理

一.首先先明白get与post的基本定义和区别: 这是两种在客户端和服务器端进行请求-响应的方法. 1get:从指定的资源请求数据. 2post:向指定的资源提交要处理的数据. get基本上用于从服务器取回数据,注意:get方法可能返回缓存数据. post可以从服务器上获取数据,不过,post方法不会缓存数据,并且常用语连同请求一起发送数据. 二. Jquery $.get()方法. $.get()方法通过Http Get发起请求,从服务器上请求数据. 语法:&.get(URL,callback

Java基础知识的三十个经典问答

Java基础知识的三十个经典问答 1.面向对象的特点 抽象: 抽象是或略一个主题中与当前目标的无关的因素,一边充分考虑有关的内容.抽象并不能解决目标中所有的问题,只能选择其中的一部分,忽略其他的部分.抽象包含两个方面:一是过程抽象:一是数据抽象. 继承 继承是一种联接类的层次模型,允许和鼓励类的重用,提供了一种明确的共性的方法.对象的一个新类可以从现有的类中派生,这叫做类的继承.心累继承了原始类 的特性,新类称为原始类的派生类或者是子类,原始类称为新类的基类或者父类.子类可以从父类那里继承父类的

java基础知识《JAVA 核心技术》学习笔记(一)

一:数据类型 (1)java整形: 类型                         存储要求 int                              4字节 short                          2字节 long                           8字节 byte                           1字节 (2)浮点类型 类型                         储存要求 float            

Java基础知识(二)

1,字符串 new String("abc")创建了几个对象? 一个或两个,如果常量池中原来有"abc",则只创建一个对象:如果常量池中原来没有字符串"abc",那么就会创建两个对象. String s="abc"; String s1="ab"+"c"; System.out.println(s==s1); 输出 true ,因为"ab"+"c"

Java基础知识之IO(2)

文件复制小案例(温习Java基础知识之IO(1)中的知识) package copy; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class CopyDemo { public stat

Java多线程知识小抄集(三)

本文主要整理博主遇到的Java多线程的相关知识点,适合速记,故命名为"小抄集".本文没有特别重点,每一项针对一个多线程知识做一个概要性总结,也有一些会带一点例子,习题方便理解和记忆. 51. SimpleDateFormat非线程安全 当多个线程共享一个SimpleDateFormat实例的时候,就会出现难以预料的异常. 主要原因是parse()方法使用calendar来生成返回的Date实例,而每次parse之前,都会把calendar里的相关属性清除掉.问题是这个calendar是

Java基础知识总结(一)

<Java基础知识总结>系列是对自己学习Java历程中知识的一个总结,也是为自己找工作前知识的回顾,为找工作奠定基础. 1.Identifiers:标识符 ①Names of class,method and variable:用于类名.方法名.变量名 ②Begin with character,"_" or "$":标识符不能以数字开头 ③Case sensitive:大小写敏感(区分大小写) ④No length limitation:长度无限制 ⑤