JAVA基础

一.Java

  1. Java 之父:詹姆斯.高斯林
    java 概述:是SUN(Stanford University Network,斯坦福大学网络公司)1995 年推出的一门高级编程语言。是一种面向Internet 的编程语言。 随着java 技术在 Web 方面的不断成熟,已经成为web应用程序 的首选开发语言。是简单易学,完全面向对象,安全可靠,与平 台无关(移植性好)的编程语言。

  2. java 的三种技术构架
    1> J2EE 企业级服务器端开发
    2> J2SE 标准版
    3> J2ME 小型嵌入式移动端设备

  3. JDK(Java Development ToolKit):java 开发工具包 作用:开发和测试java
    JRE(Java Runtime Enviromental):java 运行环境
    JVM(Java Virtual Machine):java 虚拟机

  4. java的运行原理
    1> 将java 代码编写到后缀名为 .java 的文件中
    2> 通过 javac 命令对该 java 文件进行编译
    3> 通过 java 命令对生成的 class 文件进行执行

  5. java 的基本格式
    public class 类名{

public static void main(String [] args){

System.out.println(“输出内容”);


注意:用 public 修饰的 class 的类名必须与 java 文件的名称保持一致
main 方法是主方法,是 java 程序的入口,一个类中只能有一个主方法

  1. java 的注释
    1> 用于注解说明解释程序的文字就是注释
    2> 注释提高了代码的阅读性
    3> 注释分为三种
    单行注释 //
    多行注释 /* /
    段落注释 /
    * */ 又称:文档注释

  2. Java 数据类型
    1> java 的八大基本数据类型
    数据型:byte 字节型 1KB
    short 短整型 2KB
    int 整型 4KB
    long 长整型 8KB
    浮点型:float 单精度 4KB 有效位数8位 值后面必须加上f
    double 双精度 8KB 有效位数16位
    字节型:char 字节型 2KB ‘只能放一个数字/字母/汉字’
    布尔类型:boolean 1KB boolean的值只能是true/false
    2> 引用数据类型
    class 类
    interface 接口
    array 数组

  3. 变量
    概念:内存中的一个存储区域
    该区域有自己的名称(变量名)和类型(数据类型)
    该区域的数据可以在同一类型范围内不断变化

为什么要定义变量?
用来不断的存放同一类型的常量,并可以重复使用

使用变量注意:
1> 变量的作用范围:一对{}之间有效
2> 使用前必须初始化值

定义变量的格式:
数据类型 变量名 = 初始化值 ;
例如:byte a = 6 ;
将数字6存放在类型为 byte 的 a 变量中

数据类型之间的转换
1> 小 转 大 直接转化
2> 大 转 小 强制转换(类型)
例如: int a = 3 ;
byte b = (byte) a ;

二.运算符

运算符的定义:运算时所用到的符号

  1. 算术运算符

        • / %(模运算,也叫取余运算) ++ –
          变量++ : 先运算,在自增
          ++变量 : 先自增,在运算
  2. 比较运算符

    < >= <= == !=
    注意:比较运算符的结果为boolean类型的数据
    字符串做比较时用到equals

  3. 逻辑运算符
    或运算:一真则为真,全假则为假
    | 逻辑或:在判断过程中,如果得到判断结果为真,接着依次往下判断, 直达判断完所有条件
    || 短路或:在判断过程中,一旦得到判断结果为真,后面的判断条件不再 执行
    与运算:全真则为真,一假则为假
    & 逻辑与:在判断过程中,如果得到判断结果为假,接着依次往下判断, 直达判断完所有条件
    && 短路与:在判断过程中,一旦得到判断结果为假,后面的判断条件不再 执行

  4. 位运算符
    以最有效的方式计算 24
    2 的二进制代码:00000010
    4 = 2的2次方
    2
    4就是2*2的2次方
    将2的二进制代码中的1向左移动2个单位
    2 << 2
    注意:<< 左移符号,数字越来越大

    右移符号,数字越来越小

  5. 三目/三元运算符
    格式:
    判断条件?表达式1:表达式2;

    执行原理:
    当判断结果为真时,执行表达式1,结果为假时,执行表达式2.

三.控制语句

  1. 判断语句
    1> 单判断语句
    格式: if(判断条件){

表达式1;
}else{

表达式2;

}
执行原理:当 if 后面的判断条件满足时,执行表达式1;如果不满足,则 执行表达式2。

2> 多判断语句
格式: if(判断条件1){

表达式1;
}else if(判断条件2){

表达式2;

}……else{

表达式n+1;

}
执行原理:当 if 后面的判断条件1满足时,执行表达式1;否则,判断条件 2,条件满足时,则执行表达式2,否则,继续依次往下执行,如 果所有的判断条件都不满足,则进入else中执行表达式n+1 break 跳出 continue 结束当前,执行下一次

  1. 选择语句
    switch(选择变量){

case 1:表达式1;break;
case 2:表达式2;break;
……
Default:表达式n+1;break;
}

  1. 循环语句
    1> for循环语句
    格式:for(初始化循环变量;循环条件;循环变量的自变){
    循环体;
    }
    for循环的执行原理:
    1.初始化循环变量(定义循环变量的数据类型;定义循环变量的名称;赋予 循环变量初始化值)
    2.判断循环条件是否满足,如果满足,则进入循环,如果不满足,则结 束循环
    3.当循环条件满足时,执行循环体;
    4.循环体执行完毕后,执行循环变量的自变
    5.判断自变后的循环变量是否满足循环条件,重复执行2~5.

嵌套for循环
格式:
for(初始化循环变量;循环条件;循环变量的自变){
for(初始化循环变量;循环条件;循环变量的自变){

循环体;

}
}

2> while循环
格式: while(循环条件){

循环体;


执行原理:

  1. 循环条件是否满足,如满足,进入循环,如不满足,则结束循环
  2. 当满足循环条件时,执行循环体
  3. 继续判断循环条件是否满足,重复执行1-3

3> do while 循环
格式: do{

循环体;

}while(循环条件);
执行原理:

  1. 首先执行循环体
  2. 判断循环条件是否满足,如满足,继续执行循环体,如不满足, 则结束循环

While 循环 和 do while 循环的区别:

  1. while 循环 先判断,后执行
    do while 循环 先执行,后判断

  2. 当循环条件为假时,while循环一次都不会执行,do while循环至少会执 行一次
    Random 生成随机的对象
    使用Random的步骤:

  3. 导入Random的包(注意导包的代码写在public class上面)
    import java.util.Random;

  4. 创建Random对象
    Random 别名 = new Random();

  5. 通过别名调用Random对象里面的nextInt() 产生随机数
    int 变量名 = 别名.nextInt();

Scanner 键盘输入类
使用Scanner的步骤:

  1. 导入Scanner的包(注意导包的代码写在public class上面)
    import java.util.Scanner;

  2. 创建Scanner对象并给对象起别名
    Scanner 别名 = new Scanner(System.in);

  3. 通过别名调用Scanner对象里面的nextInt()方法,让用户在控制台上 输入数字
    int 变量名 = 别名.nextInt();

四.数组 Array

一维数组
1.数组的定义:由相同的数据类型的元素(数据)所组成的组合。

  1. 格式:
    数据类型 [] 自定义数组名称 = {元素1,元素2,……,元素n};

  2. 常见的报错
    Array Index Out Of Bounds Exception.
    数组下标越界异常

  3. 定义一个新的数组
    数组类型 [] 自定义数组名称 = new 数据类型 [数组的长度length];

  4. Integer.parseInt();类型转换方法
    作用:将别的类型的数字转换成int类型的数字

int 变量名 = Integer.parseInt(要转换的数据);
将string类型的转换成int类型

double 变量名 = Double.parseDouble(要转换的数据);
转换成double型的小数

二维数组
1.二维数组定义:由多个一维数组组成的组合

2.格式:
1> 数据类型 [] [] 数组名 = new 数据类型 [行长度] [元素的个数];
注意:行长度必须得有,元素个数可以先不定义

2> 常用(二维数组的长度就是一维数组的个数)
数据类型 [] [] 数组名 = {{元素,元素,元素},{元素,元素,元素},{元素,元素}};

3.遍历二维数组的方法
for(int i = 0 ; i < arr.length ; i++){

for(int t = 0 ; t < arr[i].length ; t++){

System.out.println(arr[i][t]);

}

}
注意:i代表二维数组中第几个一维数组,t代表一维数组元素下标

五.方法

包的命名规则
com.公司/组织名称.项目名称.模块名称

1.定义:具有一定功能的代码块

2.好处:1> 将代码进行模块化开发
2> 提高了代码的复用性
3> 使代码在调用时更加的灵活方便

3.格式:
修饰符 是否是静态 有无返回值 自定义方法名称(参数列表){

方法体

方法调用
1.无返回值 无参数的方法
例:public static void eat(){ } → 在main方法直接写 eat();

2.无返回值 有参数的方法
例:public static void heShui(数据类型 参数名){ }
→ 在main方法中直接写heShui(实参); 调用时一定要传递相同数据类型的参数

3.有返回值 无参数的方法
例:public static int daGuai(){ return 66; }
→ 在main方法中接收返回值 int a = daGuai();
只要有返回值无论是什么类型的都要写上 return 值;

4.有返回值 有参数的方法
例:public static int suShu(int a,int b){ return 56 ;}
→ 在main方法中接收返回值 int c = suShu(实参);

方法的重载:方法名相同,参数不同,参数的个数,参数的类型,参数的顺序不 同,只要有一个不同就可以叫做方法重载
与修饰符和返回值类型无关,发生在同一类中

六.面向对象

什么是对象:万物皆对象
面向对象:是一种编程思想,是基于面向过程而言的。
面向过程强调的是功能(函数)
面向对象强调的是具有该功能的对象

面向对象的好处:
1.是一种符合人们思考习惯的思想
2.可以将复杂的事情简单化
3.将程序员从执行者转换成了指挥者
4.提高了代码的复用性
5.提高了代码的变成效率
6.使编程思想更加接近于人类思想

对象和类之间的关系:
类是对象在代码中的一种体现
对象的属性对应着类中的全局变量(成员变量)
对象的功能对应者类中的方法(函数)

成员变量:1. 成员变量定义在类中,在整个类中都可以被访问
2. 成员变量随着对象的建立而建立,存在于对象所在的堆内存中
3. 成员变量有默认初始化值

局部变量:局部变量只定义在局部范围内,如:函数内,语句内等
局部变量存在于栈内存中
作用的范围结束,变量空间会自动释放
局部变量没有默认初始化值

对象的组成:属性(类中的成员变量) 功能(类中的成员方法)

对象的特性:封装 继承 多态

  1. 封装:私有属性,公有方法
    (将对象的属性用private私有化,提供公共类的访问方式)

set方法:给对象的属性赋值,因为要将属性值以参数的形式传入并不需要返回 信息,所以set是一个有参数无返回值的方法

例如:public void set属性名称(属性数据类型 形参名称){

this.对象的属性 = 形参名称;

get方法:来获取对象的属性值,因为只需要将属性值返回,所以get是一个有 返回值,无参数的方法

例如:public 属性的数据类型 get属性名称(){

return 对象的属性;

this关键词: 指代当前对象

构造方法

  1. 定义:在一个类中,方法名与类名相同的方法
  2. 作用:实例化对象(创建对象)
  3. 分类:a. 无参的构造方法 b.有参的构造方法
  4. 格式:
    public 方法名(){

方法体;


5. java 中所有的类默认都有一个无参的构造方法
6. Java 中实例化对象必须通过构造方法
7. 无参的构造方法的作用:只是单纯意义上的创建对象
8. 有参的构造方法的作用:在实例化的同时,还可以给对象的某些属性赋值

对象封装的步骤:

  1. 私有属性,公有方法
  2. 生成构造方法
  3. 重写 to String 方法 重写(Override)

继承
访问修饰符 访问范围
public公共的 整个项目
protected受保护的 存在子父继承关系的类中以及同一包下
default默认的 同一包中
private私有的 只在本类当中

Java中每个类只能继承一个父类(单继承)
子类继承父类之后就拥有了父类的一些属性

继承(extends)

1,子类继承父类后,拥有父类的一些属性和方法,
2,在实例化子类时(调用子类构造方法时)首先调用父类的构造方法
(先有老子,后有儿子)
3,当父类的方法无法满足子类的需求时,子类需根据自己的需求重写父类
4,在子类中,通过Super关键词来指代父类,
5,java中,所有的类默认都继承了object!

重载(overload)

1,在同一类中!
2,方法名相同!
3,参数不同(类型不同,个数不同,顺序不同)
4,与修饰符和返回值无关!

重写(override)

1,发生在继承关系的两个类中!
2,父类的方法无法满足子类需求时,在子类中重写父类的方法!
3,子类在重写父类的方法时,方法名,参数,返回值必须与父类保持一致!
4,子类在重写父类的方法时,不能重写父类私有的和静态的方法!
5,子类在重写父类的方法时,访问修饰符必须大于等于父类(不能小于父类)
6,子类在重写父类的方法时,不能抛出比父类更大的异常!

抽象(abstract)

抽象方法:

只定义方法的结构或实现方法,没有方法体,
没有方法体的方法就叫抽象方法。

1,在一个类中,没有方法体的方法一定是抽象方法,
2,在一个类中,只要存在一个抽象方法那么这个类就是抽象类,
3,在抽象类中,可以存在已实现的方法,也可以存在未实现的方法,既可以存在全部已时间的方法,可以存在全部未实现的方法
4,在父类是一个抽象类时,子类必须重写父类未实现的方法

接口(interface) 实现(implements)

特性:

1,在接口类中,只能存在未实现的方法
2,接口是一个特殊的抽象类
3,当普通类实现接口后,必须重写接口所有的方法

格式:

接口 自定义对象名称 = new 接口实现类

4,接口和抽象类都不能被实例化
原因:
因为接口和抽象类都存在未实现的方法

普通类 抽象类和接口之间的关系

1,普通类:
在普通类中,只能存在以实现的方法, 不能存在未实现的方法

2,抽象类
在抽象类中,既可以存在已实现的方法,也可以存在未实现的方法

3,接口
在接口类中,只能存在未实现的方法,不能存在已实现的方法

4,普通类可以继承普通类
子类可以重写父类的方法,也可以不重写父类的方法

5,普通类可以继承抽象类
当父类是一个抽象类时,子类是个普通类时,子类必须重写父类未实现的方法

6,抽象类继承抽象类

抽象类继承抽象类时,既可以重写父类未实现的方法,也可以不重写父类未实现的方法

7,抽象类可以实现接口,原因是因为抽象类中可以存在未实现的方法

8,接口不能实现接口,因为接口不能存在以实现的方法

9,接口可以继承接口

String 常用类

//charAt() 参数是int型的,返回值是char型
方法的作用是: 将字符串中指定下标上的字符返回

//contains() 参数是String型的 返回值是boolean型的
方法的作用是: 判定字符串中是否含有传入的字符串,有则返回true,否则,返回fasle;

//equals() 参数是Object型的 返回值是boolean型的
方法的作用是:判断两个字符串的内容是否相当,如果相等,则返回真,如果不相等则返回假

//getBytes() 无参 返回值是byte型的数组
方法的作用是: 将字符串中的字符转化成阿斯克码表中的10进制数字存入byte型的数组中并返回

//indexOf() 参数是String型的 返回值是int型的
方法的作用是: 将传入的字符在该字符串中的下标返回

//lastIndexOf() 参数是String型的 返回值是int型的
方法的作用是: 将制定的字符在原字符串中最后一次出现的下标返回

//length() 无参数 返回值是int型的
方法的作用是: 返回字符串中字符的个数

//replace() 参数有两个,都是String型的,第一个参数是原字符串中的字符,第二个参数是要替换的字符
方法的作用: 通过第二个参数将原字符串中自定的字符进行替换

//split() 参数是String型的 返回值是String型的数组
方法的作用: 通过传入的字符对原字符串进行分割,将分割后的每一个内容存入一个字符串数组中并返回

//startsWith() 参数是String型的 返回值是boolean型的
方法的作用: 判断字符串是否是以传入的字符开头的,是,则返回真,否则,返回假

//subString() 参数是一个int型的 返回值是String型的
方法的作用是: 根据传入的下标对象字符串进行截取,截取开始的位置是传入的下标,一直截取到字符串最后一个元素

//subString() 参数是两个int型的 返回值是String型的
方法的作用: 通过传入的两个下标对字符串进行截取,截取开始的位置是第一个参数,截取结束的位置是第二个参数
//注意: 截取的内容包含开始下标上的字符,但是不包含结束下标上的字符

日期类 Date

riqi.getTime();获取当前时间的毫秒值。

riqi.getYear();获取当前时间的年份+1900年。

riqi.getMonth();获取当前时间的月份+1月。

riqi.getDate();获取当前时间的日期。

riqi.getDay();获取当前时间的星期。

riqi.getHours();获取当前时间的小时。

riqi.getMinutes();获取当前时间的分钟。

riqi.getSeconds();获取当前时间的秒数。

日期操作类 Simple Date Format

HH:mm:ss 几点几分几秒 yyyy-MM-dd 几年几月几日

SimpleDateFormat对象中的parse方法的作用:将字符串类型的日期转化成Date类型的,并返回。

SimpleDateFormat对象中的format方法的作用:将Date类型的日期转化成String型的日期,并返回。

异常 Throwable

Error 错误 Exception 异常

定义: 在事物正常运行的过程中发生的不正常情况

Error : 一般不是又代码引起的,是由外部因素引起的无法通过代码修复的
Exception :一般是由代码错误引起的,通过修改代码即可修复

分类:
1.编译时异常: 代码在编译的过程中所发生的异常
2.运行时异常: 代码编译时不报错,在运行时报错

常见的异常:

  1. ArrayIndexOutOfBoundsException 数组下标越界异常
  2. NullPointerException 空指针异常
  3. ParseException 转化异常
  4. NumberFormatException 数字格式化异常
  5. ClassNotFoundException 类找不到异常
  6. SQLException 数据库语句异常
  7. IOException IO流异常
  8. RunTimeException 运行时异常

异常的处理机制:

1.抛出异常: throws
格式: 方法名() throws 异常1,异常2,…异常n

2.捕捉异常:
格式:
try{

		可能出现异常的代码块;

	}catch(异常1 自定义异常1的别名){

		对异常1的处理代码;

	}catch(异常2 自定义异常2的别名){

		对异常2的处理代码;

	}......
	catch(异常n 自定义异常n的别名){

		对异常n的处理代码;

	}finally{

		不管try代码块中代码是否发生异常,都必须要执行的代码		

	}

throw和throws的区别:

   1. throw 声明异常     
        格式:

             throw new 自定义异常对象();

   2. throws 抛出异常

List集合

定义:由多个元素所组成的组合。

特点:集合中的元素是,没有规定数据类型,

结构:

Collection集合有两个子接口: List和Set

  1. List:
    有序有下标,元素可重复

List接口的三个实现类:

①, ArrayList:

 以数组的形式存储元素,元素都有明确的下标,当需要往ArrayList集合中插入元素时,会引起集合中元素下标位置的移动,所以,增删元素慢,但是元素都有明确的下标,所以查询速度快,但是又因为没有实现锁机制,所以线程是不安全的,因为线程不安全,所以效率较高。

②, Vector:

 以数组的形式存储元素,元素都有明确的下标,当需要往ArrayList集合中插入元素时,会引起集合中元素下标位置的移动,所以,增删元素慢,但是因为每个元素都有明确的下标,所以,查询速度快,但是因为Vector实现了锁机制,所以,效率上要低于ArrayList。

③, LinkedList:
以链表的形式存储元素,元素是有序得到,但是没有固定的下标,在获取元素时,需要每次都从头开始数,所以查询速度较慢,因为元素没有明确的下标,所以,元素增删时,效率高于ArrayList和Vector。

List集合添加元素:

add(); 方法的参数是object型的,返回值是boolean型的。

get(); 方法的参数是int型的,返回值是object型的。
通过传入的下标将该下标上的元素返回。

List集合遍历:

//创建一个list集合
List jihe = new arraylist();

For(int i = 0; i<jihe.size(); i++){
Jihe.get(“输出的结果是下标”);
}

  1. Set:
    无序无下标,元素不可重复。

Set集合的两个实现类:

①,HashSet:

HashSet元素是无序,无下标,元素不可重复,线程不安全,通过equals ()和HashCode () 方法来保证元素的唯一性,存取元素的速度比TreeSet比较快。

②,TreeSet

TreeSet元素是以二叉树的形式存储元素,存取速度较快,通过Compare ()和
CompareTo ()方法来保证元素的唯一性。

Set集合的遍历:

1,通过set集合调用iterator(迭代器)

2,通过while循环调用迭代器去迭代set集合里面的元素

3,在每次迭代时,先判断迭代器中的next方法将迭代器中的元素返回。

例子:

//创建一个set集合:
Set jihe = new HashSet ();

//调用set集合的迭代器:
Iterator ddq = jihe.iterator ();

//通过while循环循环迭代器,让迭代器取出set集合中的元素
While(ddq.hasNext()){
Jihe.next();
}
Map(接口):
Map集合以键值对的形式在存储数据;
实现类:
1.HashMap:
a.HashMap是HashTable的轻量级实现,HashMap线程不安全,所以效率较高;
b.HashMap中允许存放null的键值对;
2.HashTable:
a.HashTable是线程安全的,效率较低;
b.HashTable中不允许存放null的键值对;

//获取Map集合中所有的键 keySet()
Set keys = jihe.keySet();
//遍历Set集合必须通过迭代器
Iterator it = keys.iterator();
//通过while循环迭代器获取Set集合中的所有的键
while(it.hasNext()){
//当从Set集合中遍历出键时,通过map.get(键)来将Map集合中该键所对应的值取出并返回
System.out.println(jihe.get(it.next()));
}

获取map集合中所有的值: values()

//获取map集合中所有的值 values();
//通过map集合中的values方法获取出map集合中所有的值,并以Collection返回
Collection con = jihe.values();
//调用Collection集合中的iterator方法来获取迭代器
Iterator its = con.iterator();
//通过循环迭代器获取出collection集合中所有的值
while(its.hasNext()){
System.out.println(its.next());
}
成员变量与局部变量的区别
成员变量:书写在 方法外,类内作用域在整个方法里,不赋值的时候有默认值
局部变量:书写在方法体内或者参数列表里作用域只在当前的方法里,不赋值不能使用

String,stringbuffer,stringbulider的区别(必备)
String类型是不可变的字符串类型,进行字符串连接操作时,需要开辟新的内存空间,所以连接效率很低。
Stringbuffer是带缓冲区的可变长度字符串,字符串的连接时不需要开辟新的空间,连续效率高于string类,stringbuffer是线程安全的
Stringbulider也是可变的字符串类型,字符串连接的效率高于stringbuffer,但是线程不安全。

集合类的体系结构:
常用集合分为单列集合和双列集合。
单列集合类的超级接口是:Collection,下分为:List和Set两个接口,List接口下有:ArrayList,LinkedList,Vector等实现类,set接口有:HashSet,TreeSet等实现类
Map接口是所有双列集合的超级接口,下有HashMap,HashTable等实现类。
单列与双列集合中存储的都是对象类型。
如何使用迭代器迭代集合
Iterator迭代器是一个专门用来遍历集合使用的类,迭代器需要通过集合对象,iterator()方法获得,迭代器对象使用hasNext()方法,查看是否还有可以迭代的元素,使用next()方法返回迭代器中的对象,迭代器返回的对象默认都是object类型。
Int和integer的区别
Int的包装类就是Integer。
Integer是int提供的封装类,而int是java的基本数据类型。
Integer的默认值是null,而int默认值是0.
integer的变量需要实例化,int的变量不需要实例化。

解释内存中的栈(stack),堆(heap)和静态区(static area)的用法
通常我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的现场保存都使用内存中的栈空间,而通过new关键字和构造器创建的对象放在堆空间;
ArrayList与LinkedList的区别
ArrayList和LinkedList都是List接口的实现类 ,拥有List接口的特性。
不同点在于内存使用的方式,因为内存使用方式的不同从而导致操作效率的不同。
ArrayList使用的是数组式的存储 ,内存开辟的空间连续,当集合中添加或删除一个元素时,这个元素之后的元素都需要移动。导致添加和删除的操作效率较低。单是因为空间连续读取的效率较高。
LinkedList使用的是链式存储 空间不连续,通过地址的指向连接数组中的每一个元素。这样的内存使用可以让那个元素的添加和删除的操作效率提高。单是读取的效率较低。
ArrayList和LinkedList都是线程不安全的,如果在多线程环境下建议使用Vector,Vector也是List接口的子类线程安全。

数学

PI圆周率
System.out.println(Math.PI);

// abs(); 绝对值
System.out.println(Math.abs(-19));
//ceil 向上取整数
System.out.println(Math.ceil(12.01));
//floor 向下取整
System.out.println(Math.floor(-12.7));
//round() 四舍五入
System.out.println(Math.round(12.7));
//random() 随机数
System.out.println(Math.round(Math.random()*10));
int max = Math.max(12, 66);
System.out.println(max);
包装类
*基本数据类型 包装类

  • byte -----Byte
  • short ------Short
  • int -----Integer
  • long -----Long
  • float -----Float
  • double ----Double
  • char ----Character
  • Boolean ----Boolean
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值