狂神Java SE (三)基础

01 注释

Java 中的注释有三种:

  • 单行注释
  • 多行注释
  • 文档注释

02 标识符和关键字

类名、变量名、方法名 都被称为标识符。
关键字:
image

标识符的注意:

  • 以大小写字母、美元符、下划线开始
  • 不能用关键字作为变量名或方法名
  • 标识符大小写敏感

03 数据类型讲解

  • 强类型语言 (Java,C++)
    要求变量的使用要严格符合规定,所有变量必须先定义后才能使用
  • 弱类型语言 (JavaScript,)

Java的数据类型:

  • 基本类型(primitive type)
    • 数值类型
      • 整数类型
        • byte 1字节 :-128~127
        • short 2字节 :-32768~32767
        • int 4字节
        • long 8字节 (要在数字后加L
      • 浮点类型
        • float 4字节
        • double 8字节
      • 字符类型
        • char 2字节
    • boolean类型 1位, true/false
  • 引用类型(reference type)
    • 接口
    • 数组

字节:

  • 位 bit:计算机内部数据存储的最小单位,如 11001100 是一个八位二进制数
  • 字节 byte:计算机中数据处理的基本单位,习惯用大写B表示
  • 1B(byte, 字节) = 8bit(位)
  • 字符:指计算机中使用的字母、数字、字和字符

04 数据类型扩展及面试题讲解

  • 整数扩展:
    • 进制
      • 二进制 0b
      • 十进制
      • 八进制 0
      • 十六进制 0x
      	int i = 10; 	// 10
      	int i2 = 010; 	// 8
      	int i3 = 0x10;	// 16
      
  • 浮点数扩展:
    • float 有限 离散 舍入误差,接近但不等于
    • 最好避免使用浮点数进行比较
  • 字符扩展:
    • 所有的字符本质还是数字,可以使用 int 强制转换
    • Unicode编码,2字节,0 - 65536 ,65=A,97=a
    • 转义字符:\t 制表符;\n 换行;
	String s1 = new String("hello world");
	String s2 = new String("hello world");
	System.out.println(s1==s2); // false
	
	String s3 = "hello world";
	String s4 = "hello world";
	System.out.println(s3==s4); // true

05 类型转换

Java是强类型语言,在进行运算时会进行类型转换。

// 低 --> 高
byte, short, char -> int -> long -> float -> double

在运算中,不同类型的数据会先转换成同一类型,然后进行计算。

	int i = 128;  
	byte b = i; // 类型错误  
	byte b2 = (byte) i; // -128 强制转换,内存溢出
	double b3 = i; // 128.0
  • 强制类型转换,(类型)变量名, 从高->低
  • 自动类型转换,从低->高

注意点:

  • 不能对布尔值进行转换
  • 不能把对象类型转换为不相干的类型
  • 高容量转换到低容量的时候,强制转换
  • 转换的时候可能存在内存溢出,或者精度问题
    	System.out.println((int) 23.7); // 23  
    	System.out.println((int) -45.89f); // -45  
    	
    	char c = 'a';  
    	int d = c+1;  
    	System.out.println(d); // 98  
    	System.out.println((char)d); // b
    

小知识: Java7新特性,在数字中键入_起分割作用,且不会影响数字

	int money = 10_0000_0000;  
	System.out.println(money); // 1000000000  
	int year = 20;  
	int total = money * year;  
	System.out.println(total); // -1474836480  
	long total2 = money * year;  
	System.out.println(total2); // -1474836480  
	long total3 = money * (long)year;  
	System.out.println(total3); // 20000000000

在上面的例子中,即使进行long转型,因为默认的是int类型,在计算之前就已经发生了溢出问题。需要先将一个数转为long 类型,然后会自动向上转型,得到正确结果。

06 变量、常量、作用域

  • Java是强类型语言,每个变量都必须声明其类型。
  • Java变量是程序中最基本的存储单元,要素包括变量名变量类型作用域
    	type varName [=value] [{,varName[=value]}];
    	// 数据类型 变量名 = 值; 可以使用逗号隔开声明多个同类型变量
    

注意事项:

  • 每个变量都有类型,可以是基本类型,也可以是引用类型;
  • 变量名必须是合法的标识符;
  • 变量声明是一条完整的语句,每个声明都必须以分号结束;

变量作用域:

  • 类变量(static
  • 实例变量
  • 局部变量
    public class Variable {  
    	static int allClicks = 0; // 类变量  
    	String str = "hello world"; // 实例变量  
    
    	public void method() {  
    		int i = 0; // 局部变量  
    	}  
    }
    

局部变量必须声明和初始化值才能够使用;
实例变量从属于对象,没有初始化时会返回默认值(0, 0.0, false, 除基本类型,其余都是null,如String类型)
类变量使用static关键字

变量的命名规范:

  • 所有变量、方法、类名:见名知意
  • 类成员变量:首字母小写,驼峰原则 monthSalary
  • 局部变量:首字母小写,驼峰原则
  • 常量:大写字母和下划线 MAX_VALUE
  • 类名:首字母大写,驼峰原则 Man, GoodMan
  • 方法名:首字母小写,驼峰原则 run(), runRun()

常量(Constant):初始化(initialize)后不能改变值。可以理解为一种特殊的变量,值被设定后,在程序运行过程中不允许改变。 常量名一般使用大写字符。
	final 常量名 = 值;
	final double PI = 3.14;

07 基本运算符

  • 算术运算符 + - * / % ++ --*
  • 赋值运算符 =
  • 关系运算符 > < <= >= == != instance of
  • 逻辑运算符 && || !
  • 位运算符 & | ^ ~ >> << >>>
  • 条件运算符 ? :
  • 扩展赋值运算符 += -= *= /=

08 自增自减运算符、Math类

幂运算 Math.pow(2,3)

09 逻辑运算符、位运算符

	A = 0011 1100
	B = 0000 1101
	
	A&B = 0000 1100
	A|B = 0011 1101
	A^B = 0011 0001
	~B  = 1111 0010
	
	2*8=16 = 2*2*2*2 = 2<<3
	<<   *2
	>>   /2

10 三元运算符、小结

字符串连接符 + String时,会转为字符串输出。
x ? y : z 如果 x 为 true ,则结果为 y ,否则为 z 。
Java运算符优先级:

  • ()优先级最高

11 包机制

  • 包机制可以更好地组织类,用于区别类名的命名空间
  • 一般利用公司域名倒置作为包名
  • 一般需要使用import导入才可使用包内成员

12 Java Doc生成文档

  • javadoc命令生成自己的API文档
  • 参数信息:
    • @author 作者信息
    • @version 版本号
    • @since 指明JDK版本
    • @param 参数名
    • @return 返回值情况
    • @throws 异常抛出情况
posted @ 2021-07-09 23:12  Maple_w  阅读(35)  评论(0编辑  收藏  举报