java基础

java基础知识

标识符

  • 标识符包含类名,方法名,变量名,常量名
  1. 以字母、美元符号($)、下划线(_)开头
  2. 以字母、美元符号($)、下划线(_)、数字组成
  3. 区分大小写
  4. 不能使用关键字

数据类型

  • 基本数据类型

八大基本数据类型

  1. byte:8位(-27~27-1)

  2. short:16位(-215~215-1)

  3. int:32位(-231~231-1)

  4. long:64位(-263~263-1)

  5. float:单精度,32位(1.4E - 45 ~ 3.4028235E38)

  6. double:双精度,16位(4.9E - 324 ~ 1.7976931348623157E308),java中小数常量默认为double,如果要给float变量赋值则要加F或f

  7. char:字符型,16位(0 ~ 2^16 - 1) 占两个2字节,存储Unicode值 例如: char n = 'A';

    A对应的ASSII码值为65,a对应的ASSII码值为97,其余的字母累加即可。

  8. boolean://boolean为布尔基本类型,数值为true或者false

  • 引用数据类型

除了基本数据就是引用数据

  1. 接口
  2. 数组(String是引用类型)

进制

  • 二进制,0b
  • 八进制,0
  • 十六进制,0x
  • 十进制

浮点型的bug

在实际应用中需要避免浮点型比较大小或者是用来精确计算。

因为无论是float还是double都存在舍入误差,无法精确表达0.1或者是任何10的负n次方

System.out.println( 1.03   -  . 42 ); // 答案是0.6100000000000001 ! 
System.out.println( 1.00   -   9 * . 10 ); // 答案0.09999999999999995 !

解决办法一般采用BigDecimal或者是intlong类型

转义字符

\n 回车(\u000a)
\t 水平制表符(\u0009)
\b 空格(\u0008)
\r 换行(\u000d)
\f 换页(\u000c)
\' 单引号(\u0027)
\" 双引号(\u0022)
\\ 反斜杠(\u005c)

类型转换

  • 自动类型转换

    低类型到高类型的转换

    1. 若参与运算量的类型百不同,则先转换成同一类型,然后进行运算。
    2. 转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算。
      A.若两种类型的字节数不同,转换成字节数高的类型
      B.若两种类型的字节数相同,且一种有符号,一度种无符号,则转换成无符号类型
    3. 所有的浮点运算回都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。
    4. char型和short型参与运算时,必须先转换成int型。
    5. 在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为答左边量的类型。如果右边量的数据类型长度左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入。
    eg1:
    int i = 100;
    double j = i;  //自动将int转换成double
    
    eg2:
    short a = 32767;
    byte b = 127;
    int c = 1000000000;
    System.out.println(b*c);	//-1849018880,溢出,并不会转换成long类型
    System.out.println(a*b);	//4161409, 没有溢出,自动换成int类型
    
    eg3:
    long a = 123123123123123L;	//long数据类型需要在赋值的后面加上L或者l,因为l和1不太好区分,建议这种赋值添加L,float后面也需要添加F,同建议添加F
    int b = 123;
    short c = 10;
    byte = d =8;
    
    System.out.println(a+b+c+d);	//long,因为long类型的数据参与计算,最后是long类型
    System.out.println(b+c+d);	//int,没有用long类型的数据参与计算,结果为int
    System.out.println(c+d);	//int,默认类型是int,所以没有int参与计算依然是int类型
    
  • 强制类型转换

    • (类型) 变量名
    1. 不能对布尔值进行转换
    2. 不能把对象类型转换成不相干类型
    3. 转换时需要注意内存溢出和精度问题
    int money = 10_0000_0000;	//JDK7新特性,数字中可以用下划线进行分割,便于阅读
    System.out.println(money);
    

引用类型的比较

String类型变量的比较

String a = new String("Hellow,World!");
String b = new String("Hellow,World!");
String c = "Hellow,World!";
String d = "Hellow,World!";

System.out.println(a==b);	//输出false,new会开辟一个地址用来存储引用类型数据,进行比较比较的是地址
System.out.println(c==d);	//输出true,

变量

  • 变量类型
  • 变量名
  • 变量作用域
  1. 类变量:从属于类,必须声明,如果不初始化,会自动初始化为0或者null,boolean初始化为false,一个对象改变,其余实例化的对象也会跟着一起改变。
  2. 实例变量:从属于对象,必须声明,如果不初始化,会自动初始化为0或者null,boolean初始化为false。
  3. 局部变量:必须声明和初始化。
public class HelloWorld {
    static boolean a;
    boolean b;
    public static void main(String[] args) {
        int c = 1;

        HelloWorld hw = new HelloWorld();
        System.out.println(a);		//输出false
        System.out.println(hw.b);	//输出false
        System.out.println(c);		//输出1

    }
}

常量

一般用大写字母来命名常量

final double PI = 3.14;

//修饰符不区分前后,下面两种方式是一样的
static final double PI = 3.14;
final static double PI = 3.14;

变量名命名规则

//变量名命名规则驼峰原则,小写字母开头,后面的单词首字母大写
monthSlary;
//常量,大写字母,下划线,美元符号组成
MAX_VALUE;
//类名,单词首字母大写
MonthSalary;
//方法名
runRun();

运算符

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

String类型的加法

System.out.println(10+20+"");	//输出30,30+“” -》 “30”
System.out.println(""+10+20);	//输出1020,“1020”

包机制

  • 一般用公司域名的倒置作为包名:www.baidu.com com.baidu,www
  • 导包import
import package1.package2.package3.classname;
import package1.package2.package3.*;	//*表示通配符,即包里所有的类

javaDoc

  • author 作者
  • version 版本号
  • since 指明需要最早使用的JDK版本
  • param 参数名
  • return 返回值
  • throws 异常抛出情况

导出javaDoc的方式

  • 命令行中 调用javadoc
javadoc -encoding UTF-8 -charset UTF-8 HelloWorld.java 
  • IDEA中tool->导出 javaDoc
posted @ 2020-05-08 10:59  GoodForNothing  阅读(140)  评论(0编辑  收藏  举报
//看板娘