Java基础

Java基础

01 注释

1.单行注释
    //这是单行注释,两个斜杠
2.多行注释
    /*可以注释
    一段文字
    */
3.文档注释
    /**
    *@Description Helloworld
    *@Author:one sheep
    */

02 标识符和关键字

1、关键字:

2、标识符

Java的所有组成部分都需要名字,类名、变量名以及方法名都被称为标识符。

标识符的注意点

  • 所有的标识符都应该以字母、美元符、下划线开始
  • 首字符之后可以是字母、美元符、下划线、数字的任何字符组合
  • 不能使用关键字作为变量名或方法名
  • 标识符是大小写敏感
  • 可以使用中文命名,但不建议,也不建议用拼音

03 数据类型

Java是一种强类型语言,要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用。好处:安全性高;坏处:速度慢。

Java的数据类型分为两大类:

  • 基本类型

    • 数值类型

      • 整数类型 byte 占1字节 范围:-128~127

        ​ short 占2字节 范围:-32768~32767

        ​ int 占4字节

        ​ long 占8字节

        long num4 = 30L //long类型要在数字后面加个L
        

        一个字节是8个比特位,其中最高位表示符号位(0正1负)

        故byte的取值范围为1000 0000 到 0111 1111

        在Java中,是采用补码来表示数据的

        正数的补码和原码相同,负数的补码是在原码的基础上各位取反然后加1

        1000 000是补码,减一然后按位取反得到其原码1000 0000

        (减一得 0111 1111,再按位取反得 1000 0000)

        因为是负数,所以最小的byte值为-2^7=-128

        0111 1111的十进制为2^7-1=127(等比序列求和)

        byte是一个字节,共有2^8=256种可能性,也就是-128~127

      • 浮点类型 float 占4字节 double 占8字节

        float num5 = 50.1F //float 类型要在数字后面加个F
        
      • 字符类型 char 占2字节

        ​ 注意String不是关键字,而是一个类。

    • boolean类型:占1位,其值只有true和false两个。

  • 引用类型:类、接口、数组

什么是字节

位(bit):是计算机内存数据存储的最小单位,11001100是一个八位二进制数。

字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示

1B=8Bit

字符:是指计算机中使用的字母、数字、字和符号


04 数据类型扩展及面试题

1.整数拓展

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

int i = 10;
int i2 = 010;//八进制 8
int i3 = 0x10;//十六进制 16

2.浮点数拓展

float f = 0.1f;//0.1
double d = 1.0/10; //0.1
system.out.print(f==d);// false

float d1 = 23232312321313232321f;
float d2 = d1 + 1;
system.out.print(d1==d2);//true

为什么会出现上面的情况呢?

  • 浮点数存在着舍入误差,是大约的,接近但不等于。最好完全避免使用浮点数进行比较。

  • 在银行业务中最好使用BigDecimal类

3.字符拓展

强制转换成int
char c1 = 'a';
char c2 = '中';
System.out.print(c1);
System.out.print((int)c1);//强制转换
System.out.print(c2);
System.out.print((int)c2);//强制转换

会输出什么结果?

  • 所有的字符本质还是数字
  • 编码Unicode 2字节,65536最大
转义字符
转义字符 意义 ASCII码值(十进制)
\a 响铃(BEL) 007
\b 退格(BS),将当前位置移到前一列 008
\f 换页(FF),将当前位置移到下页开头 012
\n 换行(LF),将当前位置移到下一行开头 010
\r 回车(CR),将当前位置移到本行开头 013
\t 水平制表(HT)(跳到下一个TAB位置) 009
\v 垂直制表(VT) 011
\\ 代表一个反斜线字符 092
\' 代表一个单引号 039
\" 代表一个双引号 034
\0 空字符 00
\ddd 1到3位八进制数所代表的任意字符 三位八进制
\xhh 1到2位十六进制所代表的任意字符 二位十六进制

05 类型转换

运算中,不同类型的数据先转化为同一类型,然后进行运算。

byte,short,char→int→long→float→double

强制转换(类型)变量名 高到低

自动转换 低到高

注意点:

  1. 不能对布尔值进行转换
  2. 不能把对象类型转换为不相干的类型
  3. 在把高容量转换到低容量的时候,强制转换
  4. 转换的时候可能存在内存溢出,或者精度问题;操作比较大的数的时候,注意溢出问题。

看几个溢出的例子:

int money = 10_0000_0000;//JDK7新特性,数字之间可以用下划线分割。
int years = 20;

int total1 = money*years;
long total2 = money*years;
long total3 = money*((long)years); //先把一个数进行转换。

Syetem.out.println(total1);//结果是-1474836480
Syetem.out.println(total2);//结果同上,说明在结果转换之前已经出现问题,两个Int相乘已经溢出了。
Syetem.out.println(total3);//成功输出正确结果。
int i = 128;
byte b = (byte)i;
System.out.println(i);//输出的是128
System.out.println(b);//输出的是-128
//byte最大是127,将128赋给byte,就会发生溢出

06 变量

1.变量

Java是一种强类型语言,每个变量都必须声明其类型。

Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型作用域

注意事项

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

变量作用域

  • 类变量static: 存储的是对象的内存地址,而不是对象本身。
  • 局部变量:定义在方法里的,只能在此方法中使用。
  • 实例变量:从属于对象,如果不自行初始化,这个类型的默认值就是0、0.0、u0000、false、null(除基本类型)。

变量的命名规则

  • 所有变量、方法、类名:见名知意
  • 类成员变量:首字母小写和驼峰原则,monthSalary 除了第一个单词以外,后面的单词首字母大写。
  • 局部变量:首字母小写和驼峰原则。
  • 常量:大写字母和下划线。MAX_VALUE
  • 类名:首字母大写和驼峰原则:Man, GoodMan
  • 方法名:首字母小写和驼峰原则。

2.常量

初始化之后不能再改变值,不会变动的值。

常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。

final 常量名=值;
final double PI = 3.14;

常量名一般使用大写字符。

public class test {
    static final double PI = 3.14;
    final static double PI2 = 3.14;
    //final 和 static是修饰符,不区分前后,因此输出结果一样。
    public static void main(String[] args) {
        System.out.println(PI);
        System.out.println(PI2);
    }
}

07 运算符

Java语言支持如下运算符:

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

自增自减

public class test {

    public static void main(String[] args) {
       int a = 3;
       int b = a++;//执行完这行代码后,先给b赋值,再自增
        System.out.println(a);//输出:4
       int c = ++a;//执行完这行代码后,先自增,再给c赋值
        System.out.println(a);//输出:5
        System.out.println(b);//输出:3
        System.out.println(c);//输出:5
    }
}

08 逻辑运算符、位运算符

逻辑运算符

与(and)或(or)非(取反)

       boolean a = true;
       boolean b = false;

        System.out.println(b&&a);//两个变量都是真,结果才为true
        System.out.println(a||b);//两个变量有一个为真,结果才为true
        System.out.println(!(a&&b));//如果是真,则变为假,如果是假,则变为真
        
        //短路运算
        int c = 5;
        boolean d = (c<4)&&(c++<4);
        System.out.println(d);
        System.out.println(c);
        //此处输出d为false,而c为5,说明在“(c++<4)前面发生了短路”,没有执行c++

位运算符

A = 0011 1100

B = 0000 1101

A&B = 0000 1100 与运算:如果两个都为1,则为1,否则就是0;

A|B = 0011 1101 或运算:如果对应位都是0,则为0,否则为1

A^B = 0011 0001 异或运算:如果两个位置值相同,则是0,否则是1。

~B = 1111 0010

<< 左移,乘以2

>> 右移,除以2

字符串连接符 +, String

	int a = 10;
    int b = 20;
    System.out.println(""+a+b);//输出1020
    System.out.println(a+b+"");//输出30

三元运算符

x?y: z 如果x==true,则结果为y,否则结果为z。

	   int score = 60;
       String type = score<60?"不及格":"及格";
        System.out.println(type);//输出结果为及格

09 包机制

为了更好地组织类,Java提供了包机制,用于区别类名的命名空间。

包语句的语法格式为:

package pkg1[.pkg2[.pkg3...]];

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

为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用"import"语句可完成此功能。

import package1[.package2...].(classname|*)


10 JavaDoc

JavaDoc是一种将注释生成HTML文档的技术,生成的HTML文档类似于Java的API,易读且清晰明了。

参数信息:

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

生成方式

1.命令行

javadoc +参数设置+ 文件名.Java

2. IDEA

posted @ 2021-02-01 22:10  王小羊子  阅读(88)  评论(0)    收藏  举报