Java基础

注释

  • 单行注释 //我是单行注释

  • 多行注释 /* 我是多行注释 */

  • 文档注释 /** *@author *@Description */

标识符

类名、变量名以及方法名都被称为标识符

  • 所有标识符应该以字母、$或_开始,首字母之后就可以是字母、$、下划线和数字的任意组合
  • 标识符是大小写敏感

数据类型

  • Java是强类型语言,要求变量的使用严格符合规定,变量必须先定义后使用
  • Java数据类型分为两大类,基本类型和引用类型
  • 1字节(byte)等于8位(bit)二进制,1个字节可以储存1个英文字母或者半个汉字或一个数字
  • 字符是指计算机中使用的字母、数字、字和符号
  • long类型数字后面加个L,float类型数字后加个F
  • char name=‘陈’;
  • 数字默认值是0/0.0;char默认值是u0000;boolean默认值是false;引用类型都是null

数据类型拓展

  • 二进制0b开头,例如int i=0b100;100代表二进制数字,转换为十进制是4

  • 八进制0开头,例如int i=010;10代表八进制数字,转换为十进制是8

  • 十六进制0x开头,例如int i=0x10;10代表十六进制数字,转换为十进制是16

  • 最好完全避免使用浮点数(float、double)比较

  • 银行业务不用浮点数比较,使用BigDecimal类

  • 所有的字符本质还是数字

  • 转义字符 \t 制表符 \n换行

类型转换

  1. 低---->高,byte,short,char->int->long->float->double
  2. 强制类型转换 (类型)变量名 高到低
  3. 自动转换 低到高,直接使用就行
  4. 不能对布尔值进行转换
  5. 转换时可能存在内存溢出或者精度问题
  6. 两个int型数字做除法,可能产生小数,需要将其中一个数字转为double,即使是低类型到高类型也可以使用强转的形式
  7. 如果有long类型数字,操作之后就是long类型,double同理。如果是short、byte和int类型操作,默认是int

变量及作用域

局部变量:在方法中声明,必须进行初始化,作用域仅限于这个方法

实例变量:在类中方法外定义,从属于对象,如果不进行初始化,输出此类型默认值,int类型默认值是0,String类型默认值是null,布尔值默认是false,除了基本类型,默认值都是null。实例变量不能在此类中的方法直接使用,必须定义一个自身的对象,通过对象在方法中被调用。

类变量:相比实例变量,加static关键字。类中方法外使用static定义变量,方法内可直接使用。final和static都是修饰符,顺序无所谓。

常量:加final关键字定义 。

运算符

  1. int a=3;

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

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

    输出a,b,c分别是5,3,5

  2. A^B,异或运算,转换为二进制运算,同0异1

  3. 左移<< 右移>> 例如2<<3=16(左移乘2,右移除2);

int a=10,b=20;                //字符串连接符  +   String
System.out.println(""+a+b);//1020,如果字符串在前面,后面的自动转换为字符串拼接
System.out.println(a+b+"");//30,如果字符串在后面,前面的依然运算
                          //把a+b打上括号,结果都是30

包的本质就是文件夹

《阿里巴巴Java开发手册》

JavaDoc

  • JavaDoc是一种将注释生成HTML文档的技术,生成的HTML文档类似于Java的API。

  • javadoc命令是用来生成自己API文档的 cmd->javadoc -encoding UTF-8 -charset UTF-8 Hello.java

  • 打开.java所在文件夹,打开cmd,键入javac Hello.java,生成相应的.class文件,随后键入java Hello,显示输出结果

Scanner对象

  • Scanner类用于获取用户的输入

  • Scanner sc=new Scanner(System.in); //创建一个扫描器对象,用于接收键盘数据

  • 通过Scanner类的next()和nextLine()方法获得输入的字符串(不管是字母、数字、特殊符号还是汉字,一律都接收为字符串),在读取前我们一般需要使用hasNext()和hasNextLine()判断是否还有输入的 数据

  • next():不能得到带有空格的字符串,空格开头自动忽略,空格在有效字符之后,以空格为结束。

  • nextLine():以Enter为结束符,在此之前的所有字符包括空格都能获取。

  • 一次next()代表接受1次

  • .class(字节码文件)

循环

  • for( ; ; ){ } // 死循环

  • 表达式for(表达式1;;表达式3)可理解为for(表达式1;1;表达式3)

方法

  • Java都是值传递
  • 引用传递:对象,本质还是值传递
  • 静态方法加了static;反之没有;
  • 静态方法/属性可以通过 类名.方法名直接调用,反之要将类实例化为对象(new);
  • 同为一个类的静态方法和非静态方法(main方法是静态的),静态方法可以调用静态方法,但无法调用非静态方法,可以理解为静态方法是和类一起加载而存在的,而非静态方法要在类实例化(就是new 为对象)之后才存在;非静态方法可以调用静态方法;非静态方法可以直接调用同类的非静态方法,其它类的非静态方法只能通过对象调用;
  • 方法重载就是在一个类中,有相同的函数名称,但形参不同的函数
  • 方法重载规则:方法名称必须相同;参数列表必须不同(个数、类型或者排列顺序)
  • 返回类型可以相同也可以不同
  • 仅仅返回类型不同不能作为方法重载
  • 实现理论:方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配
  • return:结束方法,返回一个结果;break:跳出switch;结束整个循环;continue:结束一次循环

可变参数

一个方法中只能设定一个为可变参数,而且必须是形参的最后一个:int... numbers//本质是数组,类似numbers[]

数组

数组定义:int[] array;int array[];

创建数组:int[] array=new int[9];int类型默认是0;除了八大基本类型都是引用类型,数组是引用类型,数组本身也是对象,它的元素相当于类的实例变量,也相当于对象的成员变量。Java对象在堆中

静态初始化:int[] a={1,2,3};Man[] mans={new Man(),new Man()};

多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组

posted @ 2021-06-02 17:10  bobochen  阅读(52)  评论(0)    收藏  举报