Java基础知识学习< 1 >

作为一名技术人员,总觉得不能总是安于现状,因为技术不断更新发展,如果你只是关注自己拥有的不思进取,那么总有一天会在技术大浪中被冲搁浅,所以要不断学习和扩展才是正道。最近在学习Java的知识,都是一些基础,作为自己初学的笔记,也希望自己不断进步。
1.面向对象:强调的是对象实例。
面向过程:强调的是动作。
2.类与对象的关系:
类:就是对事物的描述,类是一个模板,它描述一类对象的行为和状态。
对象:对象是类的一个实例,有状态和行为。该类事物实实在在存在的个体,在java中通过new来创建,堆内存的对象主要用于封装对象中的特有数据。(例如:一只猫是一个对象;他的状态有:颜色、名字、品种;行为:摇尾巴、喵喵叫、吃等。)
方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及多有动作都是在方法中完成的。
实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定的。
基本语法:a、Java大小写敏感,例如Hello和hello不一样。b、类名的首字母大写。若是有若干个单词组成,可以使用驼峰命名法。
c、方法名:所有的方法名都应该以小写字母开头。如changeWord。d、源文件名必须和类名相同。Java中的主方法:public static void main(String []args)
标识符:类名、变量名以及方法名都被称为标识符。合法:age、$salary、_value、_1_value;非法的:123age、-salary。
Java修饰符:Java可以用修饰符修饰类中的方法和属性。(修饰符用来定义类、方法或者变量,通常放在语句的最前端)。
主要有两类修饰符:
a、访问控制修饰符:default、public、protected、private
默认default:同一包内可见,不使用任何修饰符。
私有private:同一类中可见。
共有public:对所有类可见。
受保护protected:同一包内的类和所有子类可见。(protected不能修饰类和接口,方法和变量能够被声明为protected,但是接口的成员变量和成员方法不能声明为protected。)
修饰符
当前类
同一包内
子孙类
其他包
public
Y
Y
Y
Y
protected
Y
Y
Y
N
default
Y
Y
N
N
private
Y
N
N
N
b、非访问控制修饰符:final、abstract、strictfp
类中的final方法可以被子类继承,但是不能被子类修改。声明final方法的主要目的是防止该方法的内容被修改。
一个类不能同时被abstract和final修饰,如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编译错误。
实例:
public abstract class SuperClass {
     abstract void m();// 抽象方法
}
class SubClass extends SuperClass {
     // 实现抽象方法
     void() {
          …………………...
     };
}
Synchronized 修饰符
Synchronized关键字声明的方法同一时间只能被一个线程访问。Synchronized修饰符可以应用于四个访问修饰符。
Transient修饰符
序列化的对象包含被transient修饰的实例变量时,java虚拟机(JVM)跳过该特定的变量。
该修饰符包含在定义变量的语句中,用来预处理了和变量的数据类型
实例:
public transient int limit = 55; // will persist
public int b; // will persist
Volatile修饰符
Volatile 修饰的成员变量在每次线程访问时,都强制从共享内存中重新读取该成员变量的值,而且,当成员变量发生变化时,会强制线程将变化的值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某给成员变量的同一个值。(一个volatile对象引用可能是null)。
Java变量:局部变量、类变量(静态变量)、成员变量(非静态变量)
Java数组:数组是储存在堆上的对象,可以保存多个通类型的变量。
Java枚举:Java5.0引入了枚举,枚举限制变量只能是预先设定好的值。枚举可以单独声明或者声明在类里面。方法、变量、构造函数也可以在枚举中定义。
Java关键字
关键字
描述
abstract  抽象方法,抽象类的修饰符
assert  断言条件是否满足
boolean  布尔数据类型
break  跳出循环或者label代码段
byte  8-bit 有符号数据类型
case  switch语句的一个条件
catch  和try搭配扑捉异常信息
char  16-bit Unicode字符数据类型
class  定义类
const  未使用
continue  不执行循环体剩余部分
default  switch语句中的默认分支
do  循环语句,循环体至少会执行一次
double  64-bit双精度浮点数
else  if条件不成立时执行的分支
enum  枚举类型
extends  表示一个类是另一个类的子类
final  表示一个值在初始化之后就不能再改变了
表示方法不能被重写,或者一个类不能有子类
finally  为了完成执行的代码而设计的,主要是为了程序的健壮性和完整性,无论有没有异常发生都执行代码。
float  32-bit单精度浮点数
for  for循环语句
goto  未使用
if  条件语句
implements  表示一个类实现了接口
import  导入类
instanceof  测试一个对象是否是某个类的实例
int  32位整型数
interface  接口,一种抽象的类型,仅有方法和常量的定义
long  64位整型数
native  表示方法用非java代码实现
new  分配新的类实例
package  一系列相关类组成一个包
private  表示私有字段,或者方法等,只能从类内部访问
protected  表示字段只能通过类或者其子类访问
子类或者在同一个包内的其他类
public  表示共有属性或者方法
return  方法返回值
short  16位数字
static  表示在类级别定义,所有实例共享的
strictfp  浮点数比较使用严格的规则 
super  表示基类
switch  选择语句
synchronized  表示同一时间只能由一个线程访问的代码块
this  表示调用当前实例
或者调用另一个构造函数
throw  抛出异常
throws  定义方法可能抛出的异常
transient  修饰不要序列化的字段
try  表示代码块要做异常处理或者和finally配合表示是否抛出异常都执行finally中的代码
void  标记方法不返回任何值
volatile  标记字段可能会被多个线程同时访问,而不做同步
while 
while循环
Java注释://单行注释     /*多行注释*/
Java继承:
在Java中,一个类可以由其他类派生。如果你要创建一个类,而且已经存在一个类具有你所需要的属性或方法,那么你可以将新创建的类继承该类。
利用继承的方法,可以重用已存在类的方法和属性,而不用重写这些代码。被继承的类称为超类(super class),派生类称为子类(subclass)。
Java接口:
在Java中,接口可理解为对象间相互通信的协议。接口在继承中扮演着很重要的角色。
接口只定义派生要用到的方法,但是方法的具体实现完全取决于派生类。
Java基本数据类型:
变量就是申请内存来存储值;也就是在创建变量的时候,需要在内存中申请空间。内存管理系统根据变量的类型分配相应的存储空间给变量,分配的空间只能用来存储改类型的数据。
基本类型:byte 二进制位数:8
包装类:java.lang.Byte
最小值:Byte.MIN_VALUE=-128
最大值:Byte.MAX_VALUE=127

基本类型:short 二进制位数:16
包装类:java.lang.Short
最小值:Short.MIN_VALUE=-32768
最大值:Short.MAX_VALUE=32767
 
基本类型:int 二进制位数:32
包装类:java.lang.Integer
最小值:Integer.MIN_VALUE=-2147483648
最大值:Integer.MAX_VALUE=2147483647
 
基本类型:long 二进制位数:64
包装类:java.lang.Long
最小值:Long.MIN_VALUE=-9223372036854775808
最大值:Long.MAX_VALUE=9223372036854775807
 
基本类型:float 二进制位数:32
包装类:java.lang.Float
最小值:Float.MIN_VALUE=1.4E-45
最大值:Float.MAX_VALUE=3.4028235E38
 
基本类型:double 二进制位数:64
包装类:java.lang.Double
最小值:Double.MIN_VALUE=4.9E-324
最大值:Double.MAX_VALUE=1.7976931348623157E308
 
基本类型:char 二进制位数:16
包装类:java.lang.Character
最小值:Character.MIN_VALUE=0
最大值:Character.MAX_VALUE=65535

引用类型:
在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,变量一旦声明后,类型就不能被改变了。
对象和数组都是引用类型。
所有引用类型的默认值都是null。
一个引用变量可以用来引用与任何与之兼容的类型。
Java常量:常量在程序运行过程中,不会被修改的量。
Java局部变量
a、局部变量声明在方法、构造方法或者语句块中。
b、局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁。
c、访问修饰符不能用于局部变量。
d、局部变量只在声明它的方法、构造方法或者语句块中可见。
e、局部变量是在栈上分配的。
f、局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。
Java实例变量
a、实例变量声明在一个类中,但在方法、构造方法和语句块之外。
b、当一个对象被实例化之后,每个实例变量的值就跟着确定。
c、实例变量在对象创建的时候创建,在对象呗销毁的时候销毁。
d、实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息。
e、实例变量可以声明在使用前或者使用后。
f、访问修饰符可以修饰实例变量。
g、实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例扁郎设为私有。通过使用访问修饰符可以使实例变量对子类可见。
h、实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定。
i、实例变量可以直接通过变量名访问。但在静态方法方法以及其他类中,就应该使用完全限定名:ObjectReference.VariableName。
Java类变量(静态变量):
a、类变量也称为静态变量,在类中以static关键字声明,但必须在构造方法和语句块之外。
b、无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。
c、静态变量除了被声明为常量外很少使用。常量是指声明为public/private,final和static类型的变量。常量初始化后不可改变。
d、静态变量存储在静态存储区。经常被声明为常量,很少单独使用static声明变量。
e、静态变量在程序开始的时候创建,在程序结束时销毁。
f、与实例变量具有相似的可见性。但是为了对类的使用者可见,大多数静态变量声明为public类型。
g、默认值和实例变量相似。数值变量默认值是0,布尔型默认值是false,引用类型默认值是null。变量的值可以声明的时候指定,也可以在构造方法中指定。此外,静态变量还可以在静态语句块中初始化。
h、静态变量可以通过:className、VariableName的方式访问。
i、类变量被声明为public static final类型时,类变量名称必须使用大写字母。如果静态变量不是public和final类型,其命名方式与实例变量以及局部变量的命名方式一样。
Java运算符
算术运算符、关系运算符、位运算符、逻辑运算符、赋值运算符、其他运算符
Java循环结构:
while循环:只要布尔表达式为true,循环体一直执行下去
while(布尔表达式) {
     // 循环体
}
do while循环:不满足条件,至少执行一次。
do {
     // 循环体、执行语句
} while(布尔表达式);
for循环:
for(初始化; 布尔表达式; 更新){
     // 执行语句
}
增强for循环:(主要用于数组的增强型for循环)
for(声明语句 : 表达式) {
     // 代码块
     // 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此事数组元素的值相等。
     // 表达式:表达式是要访问的数组名,或者是返回值为数组的方法。
}
for增强实例:
public class Test {
    public static void main(String[] args) {
        int[] numbers = {12, 13, 20, 30, 48, 50};
        for (int number : numbers) {
            System.out.print(number);
            System.out.print(",");
        }
        System.out.print("\n");

        String[] names = {"Jack", "Rose", "Steven", "James"}; 
        for (String name : names) {
            System.out.print(name);
            System.out.print(",");
        }
        System.out.print("\n");
    }
}
break关键字:
break主要在循环语句或者switch语句中,用来跳出整个语句块。
break跳出最里层的循环,并且继续执行该循环下面的语句。
continue关键字:
continue适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。
在for训话中,continue语句使程序立即跳转到更新语句。
在while和do...while循环中,程序立即跳转到布尔表达式的判断语句。
continue关键字实例:
public class Test {
   public static void main(String args[]) {
      int [] numbers = {10, 20, 30, 40, 50};

      for(int x : numbers ) {
         if( x == 30 ) {
          continue;
         }
         System.out.print( x );
         System.out.print("\n");
      }
   }
}
// 以上输出结果:10,20,40, 50
Java分支结构:
if语句
if(布尔表达式) {
     // 如果布尔表达式为true将执行的语句
     // 如果为真执行此处代码块,如果为假,则执行if语句块后面的代码
}
if...else语句:
if(布尔表达式) {
     // 如果布尔表达式为true
} else {
     // 如果表达式为false
}
if…else if…else语句:
检测到多种可能的情况
if(布尔表达式1) {表达式1的值为true} else if(表达式2){表达式2的值为true} else if(表达式3){表达式3的值为true} else {如果以上布尔表达式的值都不为true,执行此段代码块}
switch语句:
switch语句判断一个变量与一系列值中的某个值是否相等,每个值称为一个分支。
switch实例:
public class Test {

   public static void main(String args[]){
      //char grade = args[0].charAt(0);
      char grade = 'C';

      switch(grade)
      {
         case 'A' :
            System.out.println("Excellent!"); 
            break;
         case 'B' :
         case 'C' :
            System.out.println("Well done");
            break;
         case 'D' :
            System.out.println("You passed");
         case 'F' :
            System.out.println("Better try again");
            break;
         default :
            System.out.println("Invalid grade");
      }
      System.out.println("Your grade is " + grade);
   }
}
Java Number类:
所有的包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类Number的子类。
Number方法:
下面表中列出的是Number子类实现的方法:
序号
方法与描述
1
XXXValue()<doubleValue()、floatValue()、intValue、longValue、shortValue>
将number对象转换为xxx数据类型的值并返回。
2
compareTo()
将number对象与参数比较。
3
equals()
判断number对象是否与参数相等。
4
valuesOf()
返回一个 Number 对象指定的内置数据类型
5
toString()
以字符串形式返回值。
6
parseInt()
将字符串解析为int类型。
7
abs()
返回参数的绝对值。
8
ceil()
对整形变量向左取整,返回类型为double型。
9
floor()
对整型变量向右取整。返回类型为double类型。
10
rint()
返回与参数最接近的整数。返回类型为double。
11
round()
返回一个最接近的int、long型值。
12
min()
返回两个参数中的最小值。
13
max()
返回两个参数中的最大值。
14
exp()
返回自然数底数e的参数次方。
15
logs()
返回参数的自然数底数的对数值。
16
pow()
返回第一个参数的第二个参数次方。
17
sqrt()
求参数的算术平方根。
18
sin()
求指定double类型参数的正弦值。
19
cos()
求指定double类型参数的余弦值。
20
tan()
求指定double类型参数的正切值。
21
asin()
求指定double类型参数的反正弦值。
22
acts()
求指定double类型参数的反余弦值。
23
atan()
求指定double类型参数的反正切值。
24
atan2()
将笛卡尔坐标转换为极坐标,并返回极坐标的角度值。
25
toDegrees()
将参数转化为角度。
26
toRadians()
将角度转换为弧度。
27
random()
返回一个随机数。
Java Character类:
Character类用于对单个字符尽心操作。
Character类在对象中包装一个基本类型char的值。
Character方法:
序号 方法与描述
1 isLetter()
是否是一个字母
2 isDigit()
是否是一个数字字符
3 isWhitespace()
是否一个空格
4 isUpperCase()
是否是大写字母
5 isLowerCase()
是否是小写字母
6 toUppercase()
指定字母的大写形式
7 toLowerCase()
指定字母的小写形式
8 toString()
返回字符的字符串形式,字符串的长度仅为1
对于方法的完整列表,请参考的 java.lang.Character API 规范。
Java String类:
创建字符串:String str = ”hello String“;
字符串长度:String类的一个访问器方法length()方法,它返回字符串对象包含的字符数。str.length();
连接字符串:string1.concat(string2);    “My name is”.concat(“liuZZ”);   “Hello”+”world“;
String方法:
下面是String类支持的方法,更多详细,参看JavaString API文档:
SN(序号) 方法描述
1 char charAt(int index)
返回指定索引处的 char 值。
2 int compareTo(Object o)
把这个字符串和另一个对象比较。
3 int compareTo(String anotherString)
按字典顺序比较两个字符串。
4 int compareToIgnoreCase(String str)
按字典顺序比较两个字符串,不考虑大小写。
5 String concat(String str)
将指定字符串连接到此字符串的结尾。
6 boolean contentEquals(StringBuffer sb)
当且仅当字符串与指定的StringButter有相同顺序的字符时候返回真。
7 static String copyValueOf(char[] data)
返回指定数组中表示该字符序列的 String。
8 static String copyValueOf(char[] data, int offset, int count)
返回指定数组中表示该字符序列的 String。
9 boolean endsWith(String suffix)
测试此字符串是否以指定的后缀结束。
10 boolean equals(Object anObject)
将此字符串与指定的对象比较。
11 boolean equalsIgnoreCase(String anotherString)
将此 String 与另一个 String 比较,不考虑大小写。
12 byte[] getBytes() 
使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
13 byte[] getBytes(String charsetName)
使用指定的字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
14 void getChars(int srcBegin, int srcEnd, char[] dat, int dstBegin)
将字符从此字符串复制到目标字符数组。
15 int hashCode()
返回此字符串的哈希码。
16 int indexOf(int ch)
返回指定字符在此字符串中第一次出现处的索引。
17 int indexOf(int ch, int fromIndex)
返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。
18 int indexOf(String str) 
返回指定子字符串在此字符串中第一次出现处的索引。
19 int indexOf(String ste, int fromIndex)
返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。
20 String intern() 
返回字符串对象的规范化表示形式。
21 int lastIndexOf(int ch) 
返回指定字符在此字符串中最后一次出现处的索引。
22 int lastIndexOf(int ch, int fromIndex) 
返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。
23 int lastIndexOf(String str)
返回指定子字符串在此字符串中最右边出现处的索引。
24 int lastIndexOf(String str, int fromIndex) 
返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。
25 int length()
返回此字符串的长度。
26 boolean matches(String regex)
告知此字符串是否匹配给定的正则表达式。
27 boolean regionMatches(boolean ignoreCase, int toffset, String other, int offset, int len)
测试两个字符串区域是否相等。
28 boolean regionMatches(int toffset, String other, int ooffset, int len)
测试两个字符串区域是否相等。
29 String replace(char oldChar, char newChar)
返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
30 String replaceAll(String regex, String replacement)
使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
31 String replaceFirst(String regex, String replacement) 
使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。
32 String[] split(String regex)
根据给定正则表达式的匹配拆分此字符串。
33 String[] split(String regex, int limit)
根据匹配给定的正则表达式来拆分此字符串。
34 boolean startWith(String prefix)
测试此字符串是否以指定的前缀开始。
35 boolean startsWith(String prefix, int offset)
测试此字符串从指定索引开始的子字符串是否以指定前缀开始。
36 CharSequence subSequence(int beginIndex, int endIndex)
返回一个新的字符序列,它是此序列的一个子序列。
37 String substring(int beginIndex)
返回一个新的字符串,它是此字符串的一个子字符串。
38 String substring(int beginIndex, int endIndex)
返回一个新字符串,它是此字符串的一个子字符串。
39 char[] toCharArray()
将此字符串转换为一个新的字符数组。
40 String toLowerCase()
使用默认语言环境的规则将此 String 中的所有字符都转换为小写。
41 String toLowerCase(Locale locale)
 使用给定 Locale 的规则将此 String 中的所有字符都转换为小写。
42 String toString() 
返回此对象本身(它已经是一个字符串!)。
43 String toUppercase()
使用默认语言环境的规则将此 String 中的所有字符都转换为大写。
44 String toUppercase(Lacale locale)
使用给定 Locale 的规则将此 String 中的所有字符都转换为大写。
45 String trim()
返回字符串的副本,忽略前导空白和尾部空白。
46
static string valueOf(primitive data type x)
返回给定data type类型x参数的字符串表示形式。
Java StringBuffer和StringBuilder类
对字符串修改时,需要试用StringBuffer和StringBuilder类。
和String不同的是,StringBuffer和StringBuilder类的对象能够被多次次改,并且不产生新的未使用对象。(StringBuilder的方法不是线程安全的,不能同步访问,StringBuilder类相比较于StringBuffer有速度优势,所以大多数情况下建议试用StringBuilder类。然后在应用程序要求线程安全的情况下,则必须使用StringBuffer)
StringBuffer类支持的方法:
序号 方法描述
1 public StringBuffer append(String s)
将指定的字符串追加到此字符序列。
2 public StringBuffer reverse()
 将此字符序列用其反转形式取代。
3 public delete(int start, int end)
移除此序列的子字符串中的字符。
4 public insert(int offset, int i)
将 int 参数的字符串表示形式插入此序列中。
5 replace(int start, int end, String str)
使用给定 String 中的字符替换此序列的子字符串中的字符。
下面是StringBuffer类和String类方法相类似:
序号 方法描述
1 int capacity()
返回当前容量。
2 char charAt(int index)
返回此序列中指定索引处的 char 值。
3 void ensureCapacity(int minimumCapacity)
确保容量至少等于指定的最小值。
4 void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
将字符从此序列复制到目标字符数组 dst
5 int indexOf(String str)
返回第一次出现的指定子字符串在该字符串中的索引。
6 int indexOf(String str, int fromIndex)
从指定的索引处开始,返回第一次出现的指定子字符串在该字符串中的索引。
7 int lastIndexOf(String str)
返回最右边出现的指定子字符串在此字符串中的索引。
8 int lastIndexOf(String str, int fromIndex)
返回最后一次出现的指定子字符串在此字符串中的索引。
9 int length()
 返回长度(字符数)。
10 void setCharAt(int index, char ch)
将给定索引处的字符设置为 ch
11 void setLength(int newLength)
设置字符序列的长度。
12 CharSequence subSequence(int start, int end)
返回一个新的字符序列,该字符序列是此序列的子序列。
13 String substring(int start)
返回一个新的 String,它包含此字符序列当前所包含的字符子序列。
14 String substring(int start, int end)
返回一个新的 String,它包含此序列当前所包含的字符子序列。
15 String toString()
返回此序列中数据的字符串表示形式。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值