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

java基础知识小总结【转】的更多相关文章

  1. java基础知识小小结

    java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...

  2. JAVA基础知识|小知识点

    1.强烈建议,不使用char类型 那么,到底为什么java里不推荐使用char类型呢?其实,1个java的char字符并不完全等于一个unicode的字符.char采用的UCS-2编码,是一种淘汰的U ...

  3. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

  4. JAVA基础知识之网络编程——-网络基础(Java的http get和post请求,多线程下载)

    本文主要介绍java.net下为网络编程提供的一些基础包,InetAddress代表一个IP协议对象,可以用来获取IP地址,Host name之类的信息.URL和URLConnect可以用来访问web ...

  5. Java基础知识回顾之七 ----- 总结篇

    前言 在之前Java基础知识回顾中,我们回顾了基础数据类型.修饰符和String.三大特性.集合.多线程和IO.本篇文章则对之前学过的知识进行总结.除了简单的复习之外,还会增加一些相应的理解. 基础数 ...

  6. Java基础知识总结(超级经典)

    Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...

  7. 毕向东—Java基础知识总结(超级经典)

    Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...

  8. 第二十九节:Java基础知识-类,多态,Object,数组和字符串

    前言 Java基础知识-类,多态,Object,数组和字符串,回顾,继承,类的多态性,多态,向上转型和向下转型,Object,数组,多维数组,字符串,字符串比较. 回顾 类的定义格式: [类的修饰符] ...

  9. 沉淀,再出发:Java基础知识汇总

    沉淀,再出发:Java基础知识汇总 一.前言 不管走得多远,基础知识是最重要的,这些知识就是建造一座座高楼大厦的基石和钢筋水泥.对于Java这门包含了编程方方面面的语言,有着太多的基础知识了,从最初的 ...

随机推荐

  1. xamarin android webview XHR错误

    Cross origin requests are only supported for protocol schemes MLHttpRequest cannot load file:///F:/G ...

  2. Windows Server 2012 在桌面上显示”我的电脑”图标

    1.本地方式如果是在Windows Server 2012本地控制台下,直接按Win(键盘上的微软徽标键)+R,输入: rundll32.exe shell32.dll,Control_RunDLL ...

  3. Python 实现简单的 Web

    简单的学了下Python, 然后用Python实现简单的Web. 因为正在学习计算机网络,所以通过编程来加强自己对于Http协议和Web服务器的理解,也理解下如何实现Web服务请求.响应.错误处理以及 ...

  4. mysql安装时到最后start service时就不响应了的解决方法

  5. MongoDB学习笔记

    MongoDB的学习目标(v.3.4.0) 1.MongoDB的概念,非关系型数据库NOSQL 2.学会MongoDB的搭建 3.熟悉MongoDB使用 最基本的文档的读写更新删除 各种不同类型的索引 ...

  6. in (1,2)and in('1,2')解决

    select wm_concat(org_name) from mstorg where instr((select pass_dists from licrequests where req_no= ...

  7. JavaScript常用字符串操作方法总结

    1.判断是否为字符串:typeof() var str = 'abcd'; typeof(str);   //string 2.获取字符串的长度:length var str = '123456789 ...

  8. C语言语法 typedef小结

    在总结typedef之前,先了解一个专业术语: 常量指针(const pointer):常量指针在定义的时候必须被初始化,而且一旦初始化完成,则它的值就不能再改变. int errNumb = 0; ...

  9. 多对多关系<EntityFramework6.0>

    无负载建立多对多关联的模型 原文中是Modeling a Many-to-Many Relationship with No Payload,虽然这么翻译也有点不准确,但是可以说明其目的,如下图所示, ...

  10. OS X 下不通过Homebrew安装ASP.NET 5开发环境

    在 ASP.NET 的 Home repo 里,推荐使用 Homebrew 安装开发环境,不过我的电脑里已经有 ports 了,这应该是当年用 rvm 安装 Ruby 时悄悄地装上的吧.不管怎样,作为 ...