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的参数

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