java 基础知识——02
2017-01-09 14:17
567 查看
1. Java 是一种强类型的语言,声明变量时必须指明数据类型。变量(variable)的值占据一定的内存空间。不同类型的变量占据不同的大小。
2. Java中共有8种基本数据类型,包括4 种整型、2 种浮点型、1 种字符型、1 种布尔型,请见下表。
Java基本数据类型
3.
4.关系运算符,结果为一个布尔值。见下表:
5.
6..
condition ? x1 : x2
condition为一个boolean值。根据condition,取x1或x2的值。
7.. string 对象 ?
1) length() 方法length() 返回字符串的长度,
2)charAt() 方法charAt() 方法的作用是按照索引值获得字符串中的指定字符。
contains() 方法contains() 方法用来检测字符串是否包含某个子串
4) replace() 方法字符串替换,用来替换字符串中所有指定的子串
split() 方法以指定字符串作为分隔符,对当前字符串进行分割,分割的结果是一个数组,
8. String 的值是不可变的,每次对String的操作都会生成新的String对象,不仅效率低,而且耗费大量内存空间。
StringBuffer不像String,只能通过 new 来创建对象,不支持简写方式,例如:
StringBuffer str1 = new StringBuffer(); // 分配16个字节长度的缓冲区
9..
StringBuffer 类的主要方法StringBuffer类中的方法主要偏重于对于字符串的操作, 追加、插入和删除等
* append() 方法用于向当前字符串的末尾追加内容,类似于字符串的连接。
* deleteCharAt() 方法用来删除指定位置的字符,并将剩余的字符形成新的字符串。例如:
StringBuffer str = new StringBuffer("abcdef");
str. deleteCharAt(3); //该代码将会删除索引值为3的字符,即”d“字符
* delete()方法一次性删除多个字符,例如:
StringBuffer str = new StringBuffer("abcdef");
str.delete(1, 4);//该代码会删除索引值为1~4之间的字符,包括索引值1,但不包括4。
insert() 方法 insert() 用来在指定位置插入字符串,
StringBuffer str = new StringBuffer("abcdef");
str.insert(3, "xyz");
最后str所指向的字符串为 abcdxyzef。
*4) setCharAt() 方法setCharAt() 方法用来修改指定位置的字符。例如:
StringBuffer str = new StringBuffer("abcdef");
str.setCharAt(3, 'z');
该代码将把索引值为3的字符修改为 z,最后str所指向的字符串为 abczef。
10.
* StringBuffer、StringBuilder、String中都实现了CharSequence(字符序列)接口。
StringBuffer、StringBuilder、String对CharSequence接口的实现过程不一样,如下图所示:
图1 对CharSequence接口的实现
可见,String直接实现了CharSequence接口;StringBuilder 和 StringBuffer都是可变的字符序列,它们都继承于AbstractStringBuilder,实现了CharSequence接口。
*
StringBuffer:线程安全
StringBuilder:线程不安全
速度:
一般情况下,速度从快到慢为 StringBuilder > StringBuffer > String,当然这是相对的,不是绝对的。
使用环境:
操作少量的数据使用 String;
单线程操作大量数据使用 StringBuilder;
多线程操作大量数据使用 StringBuffer。
=====================
1. 类必须先定义才能使用。类是创建对象的模板,创建对象也叫类的实例化。 构造方法的名称必须与类的名称相同,并且没有返回值。
2.对象是类的一个实例,创建对象的过程也叫类的实例化。对象是以类为模板来创建的。
在Java中,使用new关键字来创建对象,一般有以下三个步骤:
声明:声明一个对象,包括对象名称和对象类型。
实例化:使用关键字new来创建一个对象。
初始化:使用new创建对象时,会调用构造方法初始化对象。
3.Java支持四种不同的访问权限:
4.
父类中声明为public的方法在子类中也必须为public。
父类中声明为protected的方法在子类中要么声明为protected,要么声明为public。不能声明为private。
父类中默认修饰符声明的方法,能够在子类中声明为private。
父类中声明为private的方法,不能够被继承。
5.java 变量的作用域 ?
1. 在Java中,变量的作用域分为四个级别:类级、对象实例级、方法级、块级。
*类级变量又称全局级变量或静态变量,需要使用static关键字修饰,类级变量在类定义后就已经存在,占用内存空间,可以通过类名来访问,不需要实例化。
* 对象实例级变量就是成员变量,实例化后才会分配内存空间,才能访问。
* 方法级变量就是在方法内部定义的变量,就是局部变量。
* 块级变量就是定义在一个块内部的变量,变量的生存周期就是这个块,出了这个块就消失了,比如 if、for 语句的块。
6.this 关键字用来表示当前对象本身,或当前类的一个实例,通过 this 可以调用本对象的所有方法和属性。
7.在Java中,同一个类中的多个方法可以有相同的名字,只要它们的参数列表不同就可以,这被称为方法重载(method overloading)。
说明:
参数列表不同包括:个数不同、类型不同和顺序不同。
仅仅参数变量名称不同是不可以的。
跟成员方法一样,构造方法也可以重载。
声明为final的方法不能被重载。
声明为static的方法不能被重载,但是能够被再次声明。
方法的重载的规则:
方法名称必须相同。
参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)。
方法的返回类型可以相同也可以不相同。
仅仅返回类型不同不足以成为方法的重载。
******* 初始化一个类,必须先初始化它的属性。
8..
基本数据类型及对应的包装类
包装类对象一经创建,其内容(所封装的基本类型数据值)不可改变。
Java 1.5(5.0) 之前必须手动拆箱装箱。
Java 1.5 之后可以自动拆箱装箱,也就是在进行基本数据类型和对应的包装类转换时,系统将自动进行
9..当在一个源文件中定义多个类,并且还有import语句和package语句时,要特别注意这些规则:
一个源文件中只能有一个public类。
一个源文件可以有多个非public类。
源文件的名称应该和public类的类名保持一致。例如:源文件中public类的类名是Employee,那么源文件应该命名为Employee.java。
如果一个类定义在某个包中,那么package语句应该在源文件的首行。
如果源文件包含import语句,那么应该放在package语句和类定义之间。如果没有package语句,那么import语句应该在源文件中最前面。
import语句和package语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明。
类有若干种访问级别,并且类也分不同的类型:抽象类和final类等。这些将在后续章节介绍。
除了上面提到的几种类型,Java还有一些特殊的类,如内部类、匿名类。
2. Java中共有8种基本数据类型,包括4 种整型、2 种浮点型、1 种字符型、1 种布尔型,请见下表。
数据类型 | 说明 | 所占内存 | 举例 | 备注 |
---|---|---|---|---|
byte | 字节型 | 1 byte | 3, 127 | |
short | 短整型 | 2 bytes | 3, 32767 | |
int | 整型 | 4 bytes | 3, 21474836 | |
long | 长整型 | 8 bytes | 3L, 92233720368L | long最后要有一个L字母(大小写无所谓)。 |
float | 单精度浮点型 | 4 bytes | 1.2F, 223.56F | float最后要有一个F字母(大小写无所谓)。 |
double | 双精度浮点型 | 8 bytes | 1.2, 1.2D, 223.56, 223.56D | double最后最好有一个D字母(大小写无所谓)。 |
char | 字符型 | 2 bytes | 'a', ‘A’ | 字符型数据只能是一个字符,由单引号包围。 |
boolean | 布尔型 | 1 bit | true, false |
数学运算符
数学运算,结果为一个数值。见下表:运算符 | 说明 | 举例 |
---|---|---|
+ | 加法 | 1 + 2 |
- | 减法 | 4 - 3.4 |
* | 乘法 | 7 * 1.5 |
/ | 除法 | 3.5 / 7 |
% | 取余 | 7 % 2 |
++ | 自增 | 3++ |
-- | 自减 | 3-- |
运算符 | 说明 | 举例 |
---|---|---|
> | 大于 | a > 4.2 |
>= | 大于等于 | 3.4 >= b |
< | 小于 | 1.5 < 9 |
<= | 小于等于 | 6 <= 1 |
== | 等于 | 2 == 2 |
!= | 不等于 | 2 != 2 |
&& | 与 | true && false |
|| | 或 | (3 > 1) || (2 == 1) |
! | 非 | !true |
位运算符
位运算符对整数的二进制形式逐位进行逻辑运算,得到一个整数。见下表:运算符 | 说明 | 举例 |
---|---|---|
& | 与 | 1 & 4 |
| | 或 | 2 | 5 |
^ | 异或 | 2 ^ 3 |
~ | 非 | ~5 |
<< | 左移 | 5 << 3 |
>> | 右移 | 6 >> 1 |
条件运算符
Java中也有一个条件运算符(三目运算符):condition ? x1 : x2
condition为一个boolean值。根据condition,取x1或x2的值。
7.. string 对象 ?
1) length() 方法length() 返回字符串的长度,
2)charAt() 方法charAt() 方法的作用是按照索引值获得字符串中的指定字符。
contains() 方法contains() 方法用来检测字符串是否包含某个子串
4) replace() 方法字符串替换,用来替换字符串中所有指定的子串
split() 方法以指定字符串作为分隔符,对当前字符串进行分割,分割的结果是一个数组,
8. String 的值是不可变的,每次对String的操作都会生成新的String对象,不仅效率低,而且耗费大量内存空间。
StringBuffer不像String,只能通过 new 来创建对象,不支持简写方式,例如:
StringBuffer str1 = new StringBuffer(); // 分配16个字节长度的缓冲区
9..
StringBuffer 类的主要方法StringBuffer类中的方法主要偏重于对于字符串的操作, 追加、插入和删除等
* append() 方法用于向当前字符串的末尾追加内容,类似于字符串的连接。
* deleteCharAt() 方法用来删除指定位置的字符,并将剩余的字符形成新的字符串。例如:
StringBuffer str = new StringBuffer("abcdef");
str. deleteCharAt(3); //该代码将会删除索引值为3的字符,即”d“字符
* delete()方法一次性删除多个字符,例如:
StringBuffer str = new StringBuffer("abcdef");
str.delete(1, 4);//该代码会删除索引值为1~4之间的字符,包括索引值1,但不包括4。
insert() 方法 insert() 用来在指定位置插入字符串,
StringBuffer str = new StringBuffer("abcdef");str.insert(3, "xyz");
最后str所指向的字符串为 abcdxyzef。
*4) setCharAt() 方法setCharAt() 方法用来修改指定位置的字符。例如:
StringBuffer str = new StringBuffer("abcdef");
str.setCharAt(3, 'z');
该代码将把索引值为3的字符修改为 z,最后str所指向的字符串为 abczef。
10.
StringBuilder类
StringBuilder类和StringBuffer类功能基本相似,方法也差不多,主要区别在于StringBuffer类的方法是多线程安全的,而StringBuilder不是线程安全的,相比而言,StringBuilder类会略微快一点。* StringBuffer、StringBuilder、String中都实现了CharSequence(字符序列)接口。
StringBuffer、StringBuilder、String对CharSequence接口的实现过程不一样,如下图所示:
图1 对CharSequence接口的实现
可见,String直接实现了CharSequence接口;StringBuilder 和 StringBuffer都是可变的字符序列,它们都继承于AbstractStringBuilder,实现了CharSequence接口。
*
总结
线程安全:StringBuffer:线程安全
StringBuilder:线程不安全
速度:
一般情况下,速度从快到慢为 StringBuilder > StringBuffer > String,当然这是相对的,不是绝对的。
使用环境:
操作少量的数据使用 String;
单线程操作大量数据使用 StringBuilder;
多线程操作大量数据使用 StringBuffer。
=====================
1. 类必须先定义才能使用。类是创建对象的模板,创建对象也叫类的实例化。 构造方法的名称必须与类的名称相同,并且没有返回值。
2.对象是类的一个实例,创建对象的过程也叫类的实例化。对象是以类为模板来创建的。
在Java中,使用new关键字来创建对象,一般有以下三个步骤:
声明:声明一个对象,包括对象名称和对象类型。
实例化:使用关键字new来创建一个对象。
初始化:使用new创建对象时,会调用构造方法初始化对象。
3.Java支持四种不同的访问权限:
修饰符 | 说明 |
---|---|
public | 共有的,对所有类可见。 |
protected | 受保护的,对同一包内的类和所有子类可见。 |
private | 私有的,在同一类内可见。 |
默认的 | 在同一包内可见。默认不使用任何修饰符。 |
访问控制和继承
请注意以下方法继承(不了解继承概念的读者可以跳过这里,或者点击 Java继承和多态 预览)的规则:父类中声明为public的方法在子类中也必须为public。
父类中声明为protected的方法在子类中要么声明为protected,要么声明为public。不能声明为private。
父类中默认修饰符声明的方法,能够在子类中声明为private。
父类中声明为private的方法,不能够被继承。
5.java 变量的作用域 ?
1. 在Java中,变量的作用域分为四个级别:类级、对象实例级、方法级、块级。
*类级变量又称全局级变量或静态变量,需要使用static关键字修饰,类级变量在类定义后就已经存在,占用内存空间,可以通过类名来访问,不需要实例化。
* 对象实例级变量就是成员变量,实例化后才会分配内存空间,才能访问。
* 方法级变量就是在方法内部定义的变量,就是局部变量。
* 块级变量就是定义在一个块内部的变量,变量的生存周期就是这个块,出了这个块就消失了,比如 if、for 语句的块。
6.this 关键字用来表示当前对象本身,或当前类的一个实例,通过 this 可以调用本对象的所有方法和属性。
7.在Java中,同一个类中的多个方法可以有相同的名字,只要它们的参数列表不同就可以,这被称为方法重载(method overloading)。
说明:
参数列表不同包括:个数不同、类型不同和顺序不同。
仅仅参数变量名称不同是不可以的。
跟成员方法一样,构造方法也可以重载。
声明为final的方法不能被重载。
声明为static的方法不能被重载,但是能够被再次声明。
方法的重载的规则:
方法名称必须相同。
参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)。
方法的返回类型可以相同也可以不相同。
仅仅返回类型不同不足以成为方法的重载。
******* 初始化一个类,必须先初始化它的属性。
8..
基本数据类型 | 对应的包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
char | Character |
float | Float |
double | Double |
boolean | Boolean |
Java 1.5(5.0) 之前必须手动拆箱装箱。
Java 1.5 之后可以自动拆箱装箱,也就是在进行基本数据类型和对应的包装类转换时,系统将自动进行
9..当在一个源文件中定义多个类,并且还有import语句和package语句时,要特别注意这些规则:
一个源文件中只能有一个public类。
一个源文件可以有多个非public类。
源文件的名称应该和public类的类名保持一致。例如:源文件中public类的类名是Employee,那么源文件应该命名为Employee.java。
如果一个类定义在某个包中,那么package语句应该在源文件的首行。
如果源文件包含import语句,那么应该放在package语句和类定义之间。如果没有package语句,那么import语句应该在源文件中最前面。
import语句和package语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明。
类有若干种访问级别,并且类也分不同的类型:抽象类和final类等。这些将在后续章节介绍。
除了上面提到的几种类型,Java还有一些特殊的类,如内部类、匿名类。
相关文章推荐
- java学习02-java基础知识、基本数据类型、运算符
- Java基础知识强化之IO流笔记02:try...catch的方式处理异常
- Java基础知识02-流程控制-for
- 2018_02_26牛客网刷题_JAVA基础知识
- 2018_02_25牛客网刷题_JAVA基础知识
- 【JavaWeb】基础知识总结02 JSP
- Java基础知识02
- 2018_02_27牛客网刷题_JAVA基础知识
- 2018_02_28牛客网刷题_JAVA基础知识
- Java基础知识强化02:import static 和 import
- Java基础02-基本类型相关知识
- 02-java基础知识2
- Java基础知识02-流程控制-do while
- Java基础知识02-流程控制if-else
- Java基础知识强化之集合框架笔记02:集合的继承体系图解
- Java基础知识强化之IO流笔记41:字符流缓冲流之复制文本文件案例02(使用 [ newLine() / readLine() ] )(重要)
- JavaWeb小项目涉及的基础知识02
- Java基础知识学习之路-02-第一章-Java语言概述与开发环境
- Java基础知识02-流程控制-while
- Java基础知识02-流程控制结构