Java基础

注释

这世上我最讨厌两种人,一种是写代码不写注释的人,另一种是让我写注释的人。(dog)

开玩笑的,一定要养成书写注释的习惯。

  • java的三种注释
    • 单行注释
      • //
    • 多行注释
      • /*
      • 多段文本
      • */
    • 文档注释(用于JavaDoc)
      • /*
      • * @关键词 文本
      • * @Author 我还能卷
      • */

标识符和关键字

标识符注意点

  • 都应以字母(A-Z a-z)、美元符($)或者下划线(_)开始。
  • 首字符之后可以是字母(A-Z a-z)、美元符($)、下划线(_)或数字的任意字符组合
    • 注:像~、!、@、#、^这一类的特殊符号不可以使用。
  • 标识符会区分大小写
  • 不能使用关键字!!!
  • 可以用中文,但一般不建议使用!!!

关键字

Java关键字类别 Java关键字 关键字含义
访问控制 private 一种访问控制方式:私用模式,访问控制修饰符,可以应用于类、方法或字段(在类中声明的变量)
访问控制 protected 一种访问控制方式:保护模式,可以应用于类、方法或字段(在类中声明的变量)的访问控制修饰符
访问控制 public 一种访问控制方式:共用模式,可以应用于类、方法或字段(在类中声明的变量)的访问控制修饰符。
类、方法和变量修饰符 abstract 表明类或者成员方法具有抽象属性,用于修改类或方法
类、方法和变量修饰符 class 声明一个类,用来声明新的Java类
类、方法和变量修饰符 extends 表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口
类、方法和变量修饰符 final 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量
类、方法和变量修饰符 implements 表明一个类实现了给定的接口
类、方法和变量修饰符 interface 接口
类、方法和变量修饰符 native 用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的
类、方法和变量修饰符 new 用来创建新实例对象
类、方法和变量修饰符 static 表明具有静态属性
类、方法和变量修饰符 strictfp 用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范
类、方法和变量修饰符 synchronized 表明一段代码需要同步执行
类、方法和变量修饰符 transient 声明不用序列化的成员域
类、方法和变量修饰符 volatile 表明两个或者多个变量必须同步地发生变化
程序控制 break 提前跳出一个块
程序控制 continue 回到一个块的开始处
程序控制 return 从成员方法中返回数据
程序控制 do 用在do-while循环结构中
程序控制 while 用在循环结构中
程序控制 if 条件语句的引导词
程序控制 else 用在条件语句中,表明当条件不成立时的分支
程序控制 for 一种循环结构的引导词
程序控制 instanceof 用来测试一个对象是否是指定类型的实例对象
程序控制 switch 分支语句结构的引导词
程序控制 case 用在switch语句之中,表示其中的一个分支
程序控制 default 默认,例如:用在switch语句中,表明一个默认的分支。Java8 中也作用于声明接口函数的默认实现
错误处理 try 尝试一个可能抛出异常的程序块
错误处理 catch 用在异常处理中,用来捕捉异常
错误处理 throw 抛出一个异常
错误处理 throws 声明在当前定义的成员方法中所有需要抛出的异常
包相关 import 表明要访问指定的类或包
包相关 package
基本类型 boolean 基本数据类型之一,声明布尔类型的关键字
基本类型 byte 基本数据类型之一,字节类型
基本类型 char 基本数据类型之一,字符类型
基本类型 double 基本数据类型之一,双精度浮点数类型
基本类型 float 基本数据类型之一,单精度浮点数类型
基本类型 int 基本数据类型之一,整数类型
基本类型 long 基本数据类型之一,长整数类型
基本类型 short 基本数据类型之一,短整数类型
基本类型 null 空,表示无值,不能将null赋给原始类型(byte、short、int、long、char、float、double、boolean)变量
基本类型 true 真,boolean变量的两个合法值中的一个
基本类型 false 假,boolean变量的两个合法值之一
变量引用 super 表明当前对象的父类型的引用或者父类型的构造方法
变量引用 this 指向当前实例对象的引用,用于引用当前实例
变量引用 void 声明当前成员方法没有返回值,void可以用作方法的返回类型,以指示该方法不返回值
保留字 goto 保留关键字,没有具体含义
保留字 const 保留关键字,没有具体含义,是一个类型修饰符,使用const声明的对象不能更新

数据类型

引:强类型语言:要求变量的使用要严格符合规定,所有变量都必须先定义才能使用

java的两大类数据类型

基本类型

  • 数值类型
    • 整数类型
      • byte占1字节,范围:-128~127
      • short占2字节,范围:-32768~32767
      • int占4字节,范围:- 2147483648 ~ 2147483647
      • long占8字节,范围:- 9223372036854775808 ~ 9223372036854775807
    • 浮点类型
      • float占4字节
      • double占8字节
    • 字符类型char占2字节
  • Boolean类型:占1位,值只有true和false

注:

字 word
字节 byte
位 bit,来自英文bit,音译为“比特”,表示二进制位。
字长是指字的长度

1字节=8位(1 byte = 8bit)

子和字节的关系要根据当前计算机长度来运算

16位机:16位=2字节=1字

32位机:32位=4字节=1字

64位机:64位=8字节=1字

引用类型

  • 接口
  • 数组

注:定义long和float类型时,数值后要加L和F

eg:

​ long age = 100L;

​ float salary(工资) = 10000.98F;shijin

拓展与面试

在十进制、八进制、十六进制下定义数值10

十进制 八进制 十六进制
int i = 10; int i =010 int i = 0x10

浮点数

float f = 0.1f;(数值为0.1)

double d = 1.0/10;(数值为0.1)

f 不等于 d

float小数点前后加起来有效数字只有6位

double小数点前后加起来有效数字有16位

最好完全避免使用浮点数进行比较!!!

一般需要精确时使用BigDecimal类

类型转换

  • 强制类型转换:高容量到低容量需要使用

eg:

​ long i = 1000000000;

​ int j = (int)i; (类型)变量名

  • 自动类型转换:低容量到高容量

eg:

​ int i = 200;

​ float j = i;

注意点

  • 不能对布尔值进行转换
  • 不能把对象类型转换为不相关的类型
  • 转换时可能会存在内存溢出,或者精度问题
  • 运算时,不同数据类型需要先转化为同一类型再运算

变量、常量、作用域

变量作用域

  • 类变量
  • 实例变量
  • 局部变量
public class Variable{
    static int allClicks = 0;	//类变量
    String str = "hello world";		//实例变量:从属于对象;不自行初始化,返回默认值 0 0.0
    					//布尔值:默认false
    					//除了基本类型,其余的都是null
    public void method(){
        int i = 0;	//局部变量:必须声明和初始化值
    }
}

常量

常量名一般使用大写字符

命名规范

  • 所有变量、方法、类名:见名知意
  • 类成员变量:首字母小写和驼峰原则:daySalary
  • 局部变量:同上
  • 方法名:同上
  • 类名:首字母大写和驼峰原则:DaySalary
  • 常量:大写字母和下划线:DAY_SALARY

基本运算符

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

自增自减运算符、Math类

int a = 3;

int b = a++; //执行完这行代码后,先给b赋值,再自增

int c = ++a; //执行完这行代码后,先自增,再给c赋值

幂运算

double pow = Math.pow(2,3);
System.out.println(pow);  //结果为2的三次方=8

逻辑运算符

boolean a = true;
boolean b = false;
System.out.println(a&&b);  		//false	两个都为真,结果才为真
System.out.println(a||b);  		//true	两个有一个为真,结果才为真
System.out.println(!(a&&b));  	//true	如果为真,则结果为假;如果为假,则结果为真

位运算符

A = 0011 1100
B = 0000 1101
    A&B =0000 1100	有零为零,没零为一
    A|B =0011 1101	有一为一,没一为零
    A^B =0011 0001	相同为零,不同为一
    ~B  =1111 0010      全部相反
   
    <<   *2
    >>   /2
    2<<3 = 16
    16>>3 = 2 

三元运算符

a+=b;	//a = a+b
a-=b;	//a = a-b


int a = 10;
int b = 20;
System.out.println("123"+a+b);	//结果为1231020 字符串+会将后面自动转换为字符串进行拼接
System.out.println(a+b+"123");	//结果为30123 


x ? y : z	//如果x==true,则结果为y,否则结果为z
点赞 ? 开心 : 伤心

包机制

一般利用公司域名倒置作为包名

eg:

​ www.baidu.com

​ 包名:com.baidu.www

如果要使用某一个包的成员,我们需要在Java程序中明确导入该包。使用import语句

import package1.(classname *);

JavaDoc生成文档

javadoc命令用来生成自己的API文档

参数信息

  • @author 作者名
  • @version 版本号
  • @since jdk版本
  • @param 参数名
  • @return 返回值情况
  • @throws 异常抛出情况

用命令行生成:

javadoc javadoc参数 文件名.java

用idea生成:

Tool ------> Generate JavaDoc... ------> 选择整个项目还是模块还是单个文件

Output directory:生成文档的路径 Other command line arguments:传入JavaDoc的参数

更多文章请关注《万象专栏》