Java基础

本文详细介绍了Java的基础知识,包括其简单性、面向对象、可移植性等特性,以及Java SE、ME、EE三大版本的应用场景。重点讲解了Java的数据类型,如基本数据类型的整数、浮点数、布尔值,以及进制转换和浮点数的精度问题。同时,提到了BigDecimal类用于处理高精度浮点运算,避免浮点数计算误差。此外,还涵盖了字符、类型转换和对象比较等内容,对于理解Java编程基础非常有帮助。
摘要由CSDN通过智能技术生成

Java基础

Java的特性

#简单性
#面向对象
#可移植性
#高性能
#分布式
#动态性
#多线程
#安全性
#健壮性

Java三大版本

#JAVA SE:标准版
桌面程序,控制台开发……
#JAVA ME:嵌入式开发
手机,小家电……
#JAVA EE:企业级开发
Web服务端,服务器开发……

Java注释

#单行注释
//haha
#多行注释
/*
haha*/
#文档注释
/**

*/

标识符

1.所有的标识符都应该以字母(A-Z or a-z)、美元符($)、或者下划线(_)开始
2.首字母之后可以是字母(A-Z or a-z)、美元符($)、下划线(_)或者数字的任何字符组合
3.不能使用关键字作为变量名或方法名
4.标识符是大小写敏感的

数据类型

#强类型语言
要求变量的使用要严格符合规定,所有的变量都必须先定义后才能使用
#弱类型语言

#Java的数据类型分为两大类
#基本数据类型比较值 引用类型比较地址
1)基本类型
	数值类型
		整数类型
			byte(占1个字节) -128  -  127
			short(占2个字节) -32768  -  32767
			int(占4个字节)
			long(占8个字节) long类型要在数字后面加一个L long number=10L
		浮点类型
			float(占4个字节) float类型要在数字后面加一个F float number=10.1L
			double(占8个字节) 小数默认为double类型
	boolean类型(占1位) true or false
2)引用类型
	类
	接口
	数组
#字符串
String不是关键字,是类
//整数拓展
//进制 二进制0b 八进制0 十进制 十六进制0x
public class Demo01 {
  public static void main(String[] args) {
    int i1 = 0b110;
    int i2 = 0110;
    int i3 = 110;
    int i4 = 0x110;
    System.out.println("i1="+i1);//i1=6
    System.out.println("i2="+i2);//i2=72
    System.out.println("i3="+i3);//i3=110
    System.out.println("i4="+i4);//i4=272
  }
}
//浮点数拓展
public class Demo01 {
  public static void main(String[] args) {
    //浮点数拓展 银行业务怎么表示
    //BigDecimal 数学工具类
    //float 有限(有些东西除出来是无限的) 离散 舍入误差 接近但不等于
    float f = 0.1f;//0.1
    double d = 1.0/10;//0.1
    System.out.println(f==d);//false
    System.out.println(f);//0.1
    System.out.println(d);//0.1
    //d1数字太大不能精确比较 数据比较大的时候+1没有区别
    //最好完全使用浮点数进行比较
    float d1 = 2222222222222222222f;
    float d2 = d1 + 1;
    System.out.println(d1==d2);//true
  }
}
//BigDecimal 数学工具类
//Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算
//因为不论是float 还是double都是浮点数,而计算机是二进制的,浮点数会失去一定的精确度。
//根本原因是:十进制值通常没有完全相同的二进制表示形式;十进制数的二进制表示形式可能不精确。只能无限接近于那个值
1、简介
Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。
双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。
floatdouble只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimalBigDecimal所创建的是对象,我们不能使用传统的+-*/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象。构造器是类的特殊方法,专门用来创建对象,特别是带有参数的对象。

2、构造器描述 
BigDecimal(int)       创建一个具有参数所指定整数值的对象。 
BigDecimal(double) 创建一个具有参数所指定双精度值的对象。 //不推荐使用
BigDecimal(long)    创建一个具有参数所指定长整数值的对象。 
BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象。//推荐使用

3、方法描述 
add(BigDecimal)        BigDecimal对象中的值相加,然后返回这个对象。 
subtract(BigDecimal) BigDecimal对象中的值相减,然后返回这个对象。 
multiply(BigDecimal)  BigDecimal对象中的值相乘,然后返回这个对象。 
divide(BigDecimal)     BigDecimal对象中的值相除,然后返回这个对象。 
toString()BigDecimal对象的数值转换成字符串。 
doubleValue()BigDecimal对象中的值以双精度数返回。 
floatValue()BigDecimal对象中的值以单精度数返回。 
longValue()BigDecimal对象中的值以长整数返回。 
intValue()BigDecimal对象中的值以整数返回。

//当double必须用作BigDecimal的源时
//1.Double.toString(double)转成String,然后使用String构造方法
//2.使用BigDecimal的静态方法valueOf
public class test {
  public static void main(String[] args) {
    BigDecimal b = new BigDecimal(2.333);//2.3330000000000001847411112976260483264923095703125
    BigDecimal b1 = BigDecimal.valueOf(2.333);//2.333
    BigDecimal b2 = new BigDecimal(Double.toString(2.333));//2.333
    System.out.println(b);
    System.out.println(b1);
    System.out.println(b2);

    BigDecimal a1 = new BigDecimal("8");
    BigDecimal a2 = new BigDecimal("2");
    System.out.println("a1+a2="+a1.add(a2));//a1+a2=10
    System.out.println("a1-a2="+a1.subtract(a2));//a1-a2=6
    System.out.println("a1*a2="+a1.multiply(a2));//a1*a2=16
    System.out.println("a1/a2="+a1.divide(a2));//a1/a2=4

    float f = 0.4f;
    double d = 0.2;
    BigDecimal f1 = new BigDecimal(Float.valueOf(f));
    BigDecimal d1 = new BigDecimal(Double.valueOf(d));
    System.out.println("f1*d1="+f1.multiply(d1));
    // divide(BigDecimal,保留小数点后几位小数,舍入模式)
    System.out.println("f1/d1="+f1.divide(d1,2,BigDecimal.ROUND_HALF_UP));
  }
}   

//舍入模式
ROUND_CEILING    //向正无穷方向舍入
ROUND_DOWN    //向零方向舍入
ROUND_FLOOR    //向负无穷方向舍入
ROUND_HALF_DOWN    //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向下舍入, 例如1.55 保留一位小数结果为1.5
ROUND_HALF_EVEN    //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,如果保留位数是奇数,使用ROUND_HALF_UP,如果是偶数,使用ROUND_HALF_DOWN
ROUND_HALF_UP    //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向上舍入, 1.55保留一位小数结果为1.6,也就是我们常说的“四舍五入”
ROUND_UNNECESSARY    //计算结果是精确的,不需要舍入模式
ROUND_UP    //向远离0的方向舍入

//字符拓展
public class Demo01 {
  public static void main(String[] args) {
    char c1 = 'a';
    char c2 = '中';
    System.out.println(c1);//a
    System.out.println((int)c1);//97
    System.out.println(c2);//中
    System.out.println((int)c2);//20013
    //所有的字符本质上还是数字
    //编码 Unicode 2字节 0-65536
    //转移字符
    // \t 制表符
    // \n 换行
    System.out.println("Hello\tWorld!");
    System.out.println("Hello\nWorld!");
    
    //基本数据类型比较值 引用类型比较地址
    String sa = new String("Hello World");
    String sb = new String("Hello World");
    System.out.println(sa==sb);//false
      System.out.println(sa.equals(sb));//true
    String sc = "Hello World";
    String sd = "Hello World";
    System.out.println(sc==sd);//true
  }
}

类型转换

Java是强类型语言,所以要进行有些运算时,需要用到类型转换

小数优先级大于整数

byte,short,char -> int -> long -> float -> double

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

强制类型

自动类型转换

public class Demo2 {
  public static void main(String[] args) {
    int i = 128;
    //强制转换 (类型)变量名 高---低
    byte b = (byte) i;//内存溢出
    //自动转换            低---高
    double d = i;
    System.out.println(i);//128
    System.out.println(b);//-128
    
    /**
     * 注意点:
     * 1.不能对布尔类型进行转换 布尔按位的
     * 2.不能把对象类型转换为不相干的类型
     * 3.在把高容量
    */
  }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值