【01.22】大数据 -- JAVA基础 P7-P16

【01.22】大数据 -- JAVA基础 P7-P16,第1张

【01.22】大数据 -- JAVA基础 P7-P16

复习:

    JAVA的跨平台:JVM是跨平台的前提,针对不同 *** 作系统,有不同的JVM,JAVA语言是跨平台的但是JVM不是JAVA的技术结构:JAVASE,JAVAEE,JAVAME入门程序:JAVA程序必须放在JAVA文件(后缀名是.java);一个JAVA文件中可以存放多个JAVA类,但只能有一个是公共类,用public修饰,要求java文件名和类名一致,每个java类在编译完成之后都会产生一个class文件编译:javac -d 存放位置 要编译的java文件java命令,用于运行:java 包名.类名关键字:java中有特殊含义的单词,一共有53个关键字(2个保留字,goto,const),所有的关键字都是小写的。标识符:在java中自定义的名称----字母数字下划线 , 数 字 不 能 开 头 , 字 母 常 见 语 言 基 本 字 符 , 尽 量 避 免 使 用 ,数字不能开头,字母常见语言基本字符,尽量避免使用 ,数字不能开头,字母常见语言基本字符,尽量避免使用,大小写敏感,见名知意
注释

代码中用于解释说明的文字:注释
注释格式:

    单行注释: //注释文字多行注释:文档注释: int i = 7; long l = i; float f = 3.57f; double d = f; //byte 1B, short 2B, int 4B, long 8B, float 4B, double 8B, char 2B, bool; long l = 10; // java 中整数默认为int,10为int类型,int一定可以自动转化为long类型 //一个整数在int的范围内,赋值给long类型可以不加l long l = 23456782; //正确 long l = 3348723982; //错误,超过了int 范围 long l = 3348723982L; //正确

    规律二:整数可以自动转化为小数(但可能产生精度损失)

    int i = 123456789;
    float f = i;
    // 正确,但是会输出精度损失,例如:1.23456792E8
    float f = 500; //正确,500是整数,默认为int,可以直接赋值给浮点类型f
    float f = 400L; //正确
    

    规律三:字符类型可以自动转化为整数

    char c = 'd';
    int i = c;
    //没有问题
    short s = 'a';
    System.out.println(s);
    char c = 97;
    System.out.println(c);
    //没有问题
    short s = 'a';//a是一个字面量,确定的量,代码在编译的时候可以确定'a'的值是否在short的取值范围内,所以允许转化
    char c = 97;//97是一个字面量,代码在编译的时候可以确定97的值是否在char的取值范围内,所以允许转化
    char c = 'a';
    short s = c;//c不是一个字面量,并不是一个确定的量,是一个变量,可能允许的范围在s允许的范围以外。在编译期间只能确定c是一个char类型的值,而不能确定具体指,在编译期间比对两个类型能否完全转化,发现char与short取值范围不完全重合,所以认为c会有超过short类型值得风险,因此不允许转化。
    System.out.println(s);
    //有问题!同理,char c = s;也会报错。
    

    short 类型 2B char 类型 2B
    short:-32768~32767
    char:0~65535
    并不是包含关系或完全重合。

    无精度损失:
    char -> int
    byte -> short -> int -> long
    float -> double
    有精度损失:
    long ->float

    2. 强制类型转换/显示转换

    int i = 5;
    byte b = (byte)i; //表示将变量i强制转换为byte类型之后再赋值给变量b
    System.out.println(b);
    //正确,输出5
    
    int i = 300;
    byte b = (byte)i;
    System.out.println(b);
    
    

    大类型可以强制转化为小类型,但是转化时由于字节的损失所以数据可能不准确。

    JAVA在CMD下中文报错信息出现乱码解决方案:

    https://blog.csdn.net/qq_43710979/article/details/100784050
    开始-> 右键计算机 ->属性 -> 高级系统设置 ->环境变量 -> 系统变量的部分点击新建
    输入变量名:“JAVA_TOOL_OPTIONS”
    输出变量值:"-Dfile.encoding=UTF-8"

    public class OperatorDemo{
    	public static void main(String[] args){
    		//这片代码没问题,输出7
    		int i = 3;
    		int j = 4;
    		int k = i + j;
    		System.out.println(k);
    		//这段代码有问题,提示如下:
    		byte i = 3;
    		byte j = 4;
    		byte k = i + j; 
    		System.out.println(k);
    	}
    }
    

    从int转换到byte可能会有损失

    1. byte short char 在参与运算时会自动提升为int

    //正确代码:
    public class OperatorDemo{
    	public static void main(String[] args){
    		
    		byte i = 3;
    		byte j = 4;
    		byte k = (byte)(i + j); 
    		System.out.println(k);
    	}
    }
    

    同理,以下代码也需要强制转换

    public class OperatorDemo{
    	public static void main(String[] args){
    		byte i = 3;
    		i = i + 4
    		System.out.println(i);
    		//编译报错
    	}
    }
    
    public class OperatorDemo{
    	public static void main(String[] args){
    		int i = 3 + 5;
    		System.out.println(i);
    		//打印输出8,并不报错
    	}
    }
    
    public class OperatorDemo{
    	public static void main(String[] args){
    		byte i = 3 + 5;
    		System.out.println(i);
    		//打印输出8,也不报错,因为3和5是两个字面量
    		//两个字面量参与运算的时候,JAVA为了提高效率在编译的时候会进行自动的计算过程。
    		//编译完成后是 byte i = 3 + 5 ====== byte i = 8;
    	}
    }
    

    2. java 是一门强类型语言,同一类型运算完成后结果是同一类型
    小类型与大类型同时运算的时候,结果一定是大类型!
    int / double = double

    public class OperatorDemo{
    	public static void main(String[] args){
    		int i = 4500;
    		i = i / 1000 * 1000;
    		System.out.println(i);
    		//输出4000
    	}
    }
    
    public class OperatorDemo{
    	public static void main(String[] args){
    		int i = 4500;
    		i = i / 1000.0 * 1000;
    		System.out.println(i);
    		//输出4500
    	}
    }
    

    3. JAVA中小数是浮点数,并不能精确存储

    public class OperatorDemo{
    	public static void main(String[] args){
    		double d1 = 3.29;
    		double d2 = 2.98;
    		double d = d1 - d2;
    		System.out.println(d);
    	}
    }
    


    编译的时候检查的是语法,例如下面的代码:

    public class OperatorDemo{
    	public static void main(String[] args){
    		System.out.println(3/0);
    	}
    }
    

    编译通过,但是运行会报错:
    ArithmeticException

    public class OperatorDemo{
    	public static void main(String[] args){
    		System.out.println(3.0/0);
    	}
    }
    

    非零小数除以整数零:得到infinity或 -infinity
    3.0/0 3/0.0
    0/0.0 0.0/0 0.0/0.0 --NaN
    %取模运算(取余运算)
    89 % 7 = 5
    5 % 7 = 5
    但是:
    -89 % 7 = -5
    -5 % 7 = -5
    89 % -7 = 5
    5 % -7 = 5
    -89 % -7 = -5
    -5 % -7 = -5
    结果的符号和%左边数字有关:%左边为正,则结果为正
    JAVA中还可以小数取余
    3.2 % 2 = 1.2
    5 % 1.4 = 0.8
    5.2 % 1.7 = 0.1

    自增++ / 自减–

    public class OperatorDemo{
    	public static void main(String[] args){
    		int i = 5;
    		++i;//i++
    		System.out.println(i);//输出6
    		--i;//i--
    		System.out.println(i);//输出5
    	}
    }
    

    ++在前:先自增再参与后续运算
    ++灾后:先取值再自增

    int i = 5;
    int j = ++i;//i先自增为6,再赋值给J
    int i = 5;
    int j = i++;//现将i的值(5)取值,i自增为6,然后将5赋值给j
    

    欢迎分享,转载请注明来源:内存溢出

    原文地址: http://outofmemory.cn/zaji/5713121.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存