您的位置:首页 > 编程语言 > Java开发

java 基础知识——02

2017-01-09 14:17 459 查看
1.  Java 是一种强类型的语言,声明变量时必须指明数据类型。变量(variable)的值占据一定的内存空间。不同类型的变量占据不同的大小。

2. Java中共有8种基本数据类型,包括4 种整型、2 种浮点型、1 种字符型、1 种布尔型,请见下表。

Java基本数据类型
数据类型说明所占内存举例备注
byte字节型1 byte3, 127 
short短整型2 bytes3, 32767 
int整型4 bytes3, 21474836 
long长整型8 bytes3L, 92233720368Llong最后要有一个L字母(大小写无所谓)。
float单精度浮点型4 bytes1.2F, 223.56Ffloat最后要有一个F字母(大小写无所谓)。
double双精度浮点型8 bytes1.2, 1.2D, 223.56, 223.56Ddouble最后最好有一个D字母(大小写无所谓)。
char字符型2 bytes'a', ‘A’字符型数据只能是一个字符,由单引号包围。
boolean布尔型1 bittrue, false 
3. 

数学运算符

数学运算,结果为一个数值。见下表:
运算符说明举例
+加法1 + 2
-减法4 - 3.4
*乘法7 * 1.5
/除法3.5 / 7
%取余7 % 2
++自增3++
--自减3--
4.关系运算符,结果为一个布尔值。见下表:

运算符说明举例
>大于a > 4.2
>=大于等于3.4 >= b
<小于1.5 < 9
<=小于等于6 <= 1
==等于2 == 2
!=不等于2 != 2
&&true && false
||(3 > 1) || (2 == 1)
!!true
5.

位运算符

位运算符对整数的二进制形式逐位进行逻辑运算,得到一个整数。见下表:
运算符说明举例
&1 & 4
|2 | 5
^异或2 ^ 3
~~5
<<左移5 << 3
>>右移6 >> 1
6..

条件运算符

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私有的,在同一类内可见。
默认的在同一包内可见。默认不使用任何修饰符。
4.

访问控制和继承

请注意以下方法继承(不了解继承概念的读者可以跳过这里,或者点击 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.. 

 

基本数据类型及对应的包装类
基本数据类型对应的包装类
byteByte
shortShort
intInteger
longLong
charCharacter
floatFloat
doubleDouble
booleanBoolean
包装类对象一经创建,其内容(所封装的基本类型数据值)不可改变。
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还有一些特殊的类,如内部类、匿名类。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: