java基础学习笔记

文章目录

  • java学习笔记
      • 1.数据类型
      • 2. 转义字符
      • 3. 自动类型转换
      • 4. 强制类型转换
      • 5. java 变量类型
        • 1. java 局部变量
        • 2. 实例变量(对象变量)
        • 3. 类变量
      • 6. 访问控制修饰符
      • 7. 非访问控制符
        • static修饰符
        • final修饰符
        • abstract修饰符
        • synchronized修饰符
        • transient修饰符
        • volatile修饰符
      • 8.运算符
        • 算数运算符
        • 关系运算符
        • 为运算符
        • 逻辑运算符
        • 赋值运算符
        • 条件运算符(?:)
        • instanceof 运算符
        • java运算符优先级
      • 9.循环结构
        • while
        • do…while
        • for
        • 增强for循环(数组)(for..Each循环)
        • break
        • continue
      • 10.java条件语句
        • if…else
        • switch…case
      • 11.Number&Math类
      • 12. Java Charachter类
      • 13. Java String 类(重点)
      • 14. java StringBuffer 和 StringBuilder 类
      • 15. 数组
      • 16.正则表达式
        • **正则表达式语法**
        • **Matcher类从方法**
        • **PatternSyntaxException类的方法**
      • 17.时间日期
        • 常用的类方法有:
        • SimpleDateFormat格式化日期
        • Java休眠(sleep)
        • **PatternSyntaxException类的方法**
      • 17.时间日期
        • 常用的类方法有:
        • SimpleDateFormat格式化日期
        • Java休眠(sleep)

java学习笔记

1.数据类型

byte : 8位,有符号,默认值为0。
short : 16位,有符号,默认值为0。
int : 32位,有符号,默认值为0。
long :64位,有符号,默认值为0。
float :单精度32位,有符号,默认值0.0f。
double :双精度,64位,默认值为0.0d。
boolean :1位,true,false,默认值false。
char :单一的16位Unicode字符,最小值0,最大值65535。

2. 转义字符

  1. 换行 \n

  2. 回车 \r

  3. 换页符 \f

  4. 退格符 \b

  5. 空字符 \0

  6. 字符串 \s

  7. 制表符 \t

3. 自动类型转换

byte,short, char -> int -> log -> float -> double

  1. 不能对boolean进行任何类型转换。

4. 强制类型转换

  1. 条件是转换的数据类型必须兼容。
  2. 格式(type) value (type)。

5. java 变量类型

  1. 类变量:类中独立与方法之外,用static修饰。

  2. 实例变量 :独立与方法之外,没有用static修饰。

  3. 局部变量:类中方法的变量。

1. java 局部变量

  1. 局部变量声明在方法,构造方法或者语句块中,作用域在语句块内。
  2. 在语句块被执行时创建,执行完销毁。
  3. 访问修饰符不能用于局部变量。
  4. 局部变量是在栈上分配。
  5. 局部变量没有默认值,都必须经过初始化后,才可以使用。

2. 实例变量(对象变量)

  1. 在类中,在类的语句块之外。
  2. 当实例化对象后,实例变量的值被确定。
  3. 在对象创建时创建,对象销毁时销毁。
  4. 至少被一个语句块引用,使得外部能通过这些方式获取实例变量的值。
  5. 实例变量可以声明为使用前或使用后。
  6. 访问修饰符可以修饰实例变量,一般设为私有,也可设置为保护,可以被子类访问。

3. 类变量

  1. 使用static关键字声明。
  2. 无论类创建多个对象,类只拥有类变量的一份拷贝。
  3. 静态变量除了被声明为常量外,很少使用,常量指。public/private ,final ,static类型的变量,常量初始化后不可被改变。
  4. 静态变量放在静态存储区,在第一次访问时创建,在程序结束时销毁。
  5. 静态变量一般用大写。

6. 访问控制修饰符

  1. default: 在同一包内可见,不使用任何修饰符。使用对象:类,接口,变量,方法。

  2. private: 在同一类内可见,同包不可见,子孙不可见。使用对象:变量,方法。

    主要用于:隐藏类的实现细节,保护类的数据。

  3. public:对所有类可见。使用方法: 类,接口,变量,方法。

  4. protected:对同一包内的类和所有子类可见。使用对象方法,变量。

    接口和接口的成员变量,方法不能声明为protected。

    子类与基类在同一包:被声明为protected的变量,方法,构造器能被同一包的任何其他类访问。

    子类与基类不在同一包中:那么在子类中,子类实例可以访问其从基类继承而来的protected方法,而不能访问基类实例的protected方法。

7. 非访问控制符

  1. static修饰符

    1. 静态变量

      用来申明独立与对象的变量,无论多少实例化,都只有一份静态变量的拷贝。

    2. 静态方法

      用来申明独立与对象的静态方法,静态方法不能使用类的非静态变量。

  2. final修饰符

    变量一旦被赋值,不能被重新赋值。被final修饰的实例变量必须显式指定初始值。final修饰符通常和static修饰符一起使用来创建类常量。

    1. final方法

      final修饰的方法,可以被子类继承,但不能被子类修改。

    2. final类

      final类不能被继承,没有类能够继承final类的任何特性。

  3. abstract修饰符

    抽象类不能用来实例化,声明抽象类的唯一目的是为了将来对该类扩充。抽象类可以包含非抽象方法,也可以不包含抽象方法。

    抽象方法,是一种没有任何实现的方法,该方法的具体实现由子类提供。抽象类不能被final和static修饰。

    任何抽象类的子类必须实现父类的所有抽象方法,除非子类也是抽象类。

    抽象类以分号结尾。public abstract sample();

  4. synchronized修饰符

    synchronized修饰的方法同一时间,只能被一个线程访问。

  5. transient修饰符

    序列化的对象包含被transient修饰的实例变量时,java虚拟机跳过该特定的变量。该修饰符用在定义变量的语句中,用来预处理类和变量的数据类型。

  6. volatile修饰符

    volatile修饰的成员变量,线程在每次访问它时,都会强制从共享内存中重新读取该成员变量的值,当成员变量发生变化时,会强制将变化值写回到共享内存中。两个不同的线程总是看到某个成员变量的同一个值。一个volatile对象引用可能时null。

8.运算符

  1. 算数运算符

    + 加法

    - 减法

    * 乘法

    / 除法

    % 取余

    ++ 自增

    –- 自减

  2. 关系运算符

    == 操作数的值是否相同

    != 操作数的值是否不相同

    > 数值大于

    < 数值小于

    >= 大于等于

    <= 小于等于

  3. 为运算符

    & 与

    | 或

    ^ 非
       按位取反
    

    << 左移

    >> 右移

    >>> 按位右移补0

  4. 逻辑运算符

    && 逻辑与,AB都为真才真

    || 逻辑或,AB有一个为真,则真

    ! 逻辑非,只有一个操作数,反转操作数的逻辑状态

    注意:在&&时第一个操作为false,则不会在去判断第二个操作符。

  5. 赋值运算符

    = 等于

    += 左加右,赋值给左

    -= 左减右,赋值给左

    *= 左乘以右,赋值给左

    /= 左除以右,赋值给左

    (%)= 左除以右,取模,赋值给右

    <<= 左移赋值

    >>= 右移赋值

    &= 按位与赋值

    |= 按位或赋值

    ^= 按位取反赋值

  6. 条件运算符(?:)

    variable x = (expression) ? value1 if true : value2 if false

    真取value1,假取value2

  7. instanceof 运算符

    检查对象是否是特定的类

    格式:( Object reference variable ) instanceof (class/interface type)

  8. java运算符优先级

    类别 操作符 关联性
    后缀 ()[]. 左到右
    一元 +±-!~ 右到左
    乘除 */% 左到右
    加减 ± 左到右
    移位 >> >>> << 左到右
    相等 == != 左到右
    按位与 & 左到右
    按位异或 ^ 左到右
    按位或 | 左到右
    逻辑与 && 左到右
    逻辑或 || 左到右
    条件 (?:) 左到右
    赋值 = += … 左到右
    逗号 左到右

9.循环结构

  1. while

    先判断再执行。

    while(boolean表达式){
      //循环体
    }
    
  2. do…while

    先执行一次,再判断

    do{
    	//循环体
    }while(boolean表达式)
    
  3. for

    最先执行初始化步骤,可以声明一种类型,可以初始化一个或多个循环控制变量,也可以是空语句(死循环)。

    for(int i = 0; i < 10; i++){
    	//循环体
    }
    
  4. 增强for循环(数组)(for…Each循环)

    java5加入,主要用于数组的增强型循环。

    声明语句:声明新的局部变量,必须与数组中的元素匹配,作用域限定再循环语句块中,值与此时数组元素的值相同。

    表达式:表达式是要访问的数组名,或者是返回数组的方法。

    for(声明语句:表达式){
        //循环体
    }
    
  5. break

    主要用于跳出循环。

    跳出最里层循环,并执行该循环下面的语句。

  6. continue

    适用于任何循环控制结构中。让程序跳转到下一次循环迭代。

10.java条件语句

  1. if…else

if(布尔表达式1){
	//布尔1值为true,执行语句
}else if(布尔表达式1){
	//布尔1值为true,执行语句
}else if(布尔表达式1){
	//布尔1值为true,执行语句
}else{
	//都不是,执行语句
}   
  1. switch…case

    判断某个值知否相等

    在执行时会先进行匹配,匹配成功返回当前case值,再根据break,判断是否继续输出。

    switch(变量){
    case A:
       breakcase B:
    case C:
        breakdefault//语句
    }
    //如果没有break,B,C,default的语句都会输出
    

11.Number&Math类

  1. Number类

    Number类都是java.lang包内,不需要导包。

    1. Byte
    2. Short
    3. Integer
    4. Long
    5. Float
    6. Double
  2. Math类

    包含了执行基本数学运算的属性和方法,初等指数,对数,平方根,三角函数。

    Math的方法都被定义为static,可以用Math.mathod直接调用。

    常用方法

    1. xxxValue 将Number对象转为对应的数据类型的值返回。
    2. compareTo() 将Number对象与参数比较。
    3. equals() 将Number对象与参数是否相同。
    4. valueOf() 返回Number对象指定的内置数据类型。
    5. toString() 返回字符串。
    6. parselnt() 将字符串解析为int类型。
    7. abs() 绝对值。
    8. call() 返回大于等于给定参数的最小整数,双精度浮点型。
    9. floor()返回小于等于给定参数的最大整数。
    10. rint() 返回参数最近的整数,返回类型为double。
    11. round() 四舍五入。
    12. min() 返回两个参数的最小值。
    13. max() 返回两个参数的最大值。
    14. exp() 返回自然数底数e的参数次方。
    15. log() 返回参数的自然数底数的对数。
    16. pow()返回第一参数的第二个参数次方。
    17. sqrt() 求参数的算术平方根。
    18. sin(),cos(),tan() 求正弦值,余弦值,正切值。double型。
    19. asin(),acos(),atan() 反正弦值,反余弦值,饭正切值。double型。
    20. toDegress() 将参数转为角度值。
    21. toRadians() 将角度转为弧度。
    22. random() 返回一个随机数。

12. Java Charachter类

​ Character类用于对单个字符进行操作。包装了基本类型char的值。8位。java.lang包。

  1. Character 方法
    1. isLetter() 是否是一个字母。
    2. isDigit() 是否是一个数字字符。
    3. isWhitespace() 是否是一个空白字符。
    4. isUpperCase() 是否是大写字母。
    5. isLowerCase() 是否是小写字母。
    6. toUpperCase() 指定字母的大写形式。
    7. toLowerCase() 自定字母的小写形式。
    8. toString() 返回字符的字符串形式,字符串的长度为1。

13. Java String 类(重点)

String类是不可改变的,一旦创建String对象,它的值就无法改变。

如果要对字符串进行修改,那么使用StringBuffer&StringBuilder类。

输出格式化数字可以使用 printf() 和 format() 方法。

String 类使用静态方法 format() 返回一个String 对象而不是 PrintStream 对象。

String 类的静态方法 format() 能用来创建可复用的格式化字符串,而不仅仅是用于一次打印输出。fs = String.format(“string1+string2”)。

  1. String 方法
    1. charAt() 指定索引的char值。
    2. compareTo() 把字符串和对象相比。
    3. compareTolgnoreCase() 按字典顺序比较字符串。
    4. concat() 连接字符串。
    5. length() 长度。
    6. replaceAll() 使用给定的replacement替换此字符串所有匹配给定的正则表达式的子字符串。
    7. replaceFirst() 使用给定的replacement替换此字符串匹配给定的正则表达式的第一个字符串。
    8. split() 根据给定正则表达式的匹配拆分此字符串。
    9. toCharArry() 将此字符串转换位一个新的字符数组。

14. java StringBuffer 和 StringBuilder 类

StringBuffer和StringBuilder类的对象能够被多次修改,并且不产生新的未使用的对象。

区别:StringBuilder比StingBuffer速度快。但是再线程安全的情况下,要使用StringBuffer,一般使用StringBuilder。

  1. 常用的一些方法

    增删改查。

15. 数组

  1. 动态创建数组

    申明数组: dataType[] arrayRefVar;

    创建数组: arrayRefVar = new dataType[arraySize];

  2. 静态创建数组

    dataType[] arrayRefVer = {value0, value1, …, valuek};

使用for循环或者for…Each循环遍历。
Arrays类在 java.util.Arrays中。
给数组赋值:fill();
给数组排序:sort();
比较数组:equals();
查找元素:binarySearch();先排序,后二分查找。

16.正则表达式

java.util.regex包包含三个类:

  1. Pattern类
    pattern对象是一个正则表达式的编译表示。

  2. Matcher类
    Matcher对象是对输入字符串进行解释和匹配操作的引擎。

  3. PatternSyntaxException类
    是一个非强制异常类,它表示一个正则表达式中的语法错误。

正则表达式语法

在其他语言中:\:插入一个\
在java中:\\插入一个\,转义\后的字符,使具有特殊意义。

字符 说明
\ 将下一个字符标记为特殊字符
^ & 匹配字符开始或结尾的位置,还会匹配”\n”,”\r”
*,{0,} 匹配0次或多次 zo* 匹配z 和 zoo
+,{1,} 最少匹配一次前面的字符
?,{0,1} 0次或一次匹配前面的字符
{n} 正好匹配n次前面的字符
{n,} 至少匹配n次
{n, m} 至少匹配n次,至多匹配m次
(pattern) 匹配pattern并捕获该匹配的子表达式,可以使用$0…$9从匹配到的集合中检索。如果需要匹配(),需要使用\(\)。
(?:pattern) 匹配但不获取匹配结果
(?=pattern) 执行正向预测先行搜索的子表达式
(?!pattern) 执行反向预测先行搜索的子表达式
x|y 匹配x或y
[xyz] xyz中任一字符
[^xyz] 匹配未包含的任何字符
[a-z],[a-z] 字符范围
\b,\B 字符边界,er\b 匹配never中的er,不匹配verb中的er
\cx 匹配控制字符,\cM 匹配control-M
\d ,\D 匹配数字,等效[0-9]或[^0-9]
\f 匹配换页符,等效与\x0c和\cL
\n 换行匹配,等效\0xa和\cJ
\r 匹配一个回车符,等效\x0d和\cM
\s, \S 匹配空字符,包括空格,制表符,换页符[\f\n\r\t\v]
\t, \v 水平制表符,垂直制表符
\w, \W 匹配任何字符,包含下划线,等效[A-Za-z0-9_]
\num 匹配num,捕获匹配的反向引用,”(.)\1”两个连续的相同字符

Matcher类从方法

  1. 索引方法

    告诉我们在哪找到匹配的字符。

    1. start() 返回以前匹配的初始索引。
    2. end() 返回最后匹配字符之后的偏移量。
  2. 研究方法

    输入字符串,返回boolean,表示是否找到。

    1. matches() 将整个区域与模式进行匹配。
  3. 替换方法

    替换匹配到的字符。

    1. replaceAll()
    2. replaceFirst()

PatternSyntaxException类的方法

指示正则表达式从错误

  1. getDescription()
  2. getIndex()
  3. getPattern()
  4. getMessage()

17.时间日期

Date 封装在java.util中

常用的类方法有:

  1. getTime()
  2. setTime()
  3. toString

SimpleDateFormat格式化日期

SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");

Java休眠(sleep)

sleep()使当前线程进入停滞状态(阻塞当前线程),让出cpu给其它线程使用。

  1. 研究方法

    输入字符串,返回boolean,表示是否找到。

    1. matches() 将整个区域与模式进行匹配。
  2. 替换方法

    替换匹配到的字符。

    1. replaceAll()
    2. replaceFirst()

PatternSyntaxException类的方法

指示正则表达式从错误

  1. getDescription()
  2. getIndex()
  3. getPattern()
  4. getMessage()

17.时间日期

Date 封装在java.util中

常用的类方法有:

  1. getTime()
  2. setTime()
  3. toString

SimpleDateFormat格式化日期

SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");

Java休眠(sleep)

sleep()使当前线程进入停滞状态(阻塞当前线程),让出cpu给其它线程使用。

你可能感兴趣的:(java)