java中数据类型和常用工具指令

1.8 Java中常用的工具命令:bin

javac 编译指令

java 运行指令

javadoc 生成帮助文档【说明书】

javadoc -d 文件夹名字 xxx.java
在这里插入图片描述

jar 生成可执行的压缩归档文件

jar cvf 新的名字.jar xxx.class
在这里插入图片描述

双击可执行方法:

右击生成的jar包,用winRAR打开,双击META-INF,在MANIFEST-MF中最后一行添加:Main-class: 类名

native2ascii 得到一个元素的Unicode编码

1.9 数据类型

Java是一种强类型的编程语言,所有的变量在第一次出现的时候必须有数据类型
在这里插入图片描述

苹果:一个英文/中文-》2个字节/16位 :Unicode

windows:一个英文1个字节/中文2个字节 :ascii

**小练习:**TestDataType.java

public class TestDataType{
	public static void main(String[] args){
			Student stu = new Student();
    		int x = 034;       //八进制赋值
    		int y = 0x34;     //十六进制赋值
    		int z = 34;         //十进制赋值
    		char a = '\u5520';   //Unicode赋值
    		double c = 45.5D;  //双精度浮点型
			float d = 11.1F;       //单精度浮点型
		    System.out.println(3200000000.0);//3.2E9 = 3.2 * 10(9)科学计数法
    		String b = "张三\t100分\n王五\t98分\n";
    		System.out.println(x+"\t"+y+"\t"+z+"\t"+a+"\n"+b);
    		stu.name="张三";
    		stu.age=23;
    		stu.blood='o';
    		stu.sex='女';
    		stu.showInfo();
    		stu.isMarried=false;
    		if(stu.isMarried==false){
				System.out.println("未婚");
				}else{
					System.out.println("已婚");
					}
System.out.println("D:\\\\课件\\et2106\\day3\\TestDataType3.java"); // 一个\是转义字符,想输出\\则需要\\\\四个,成对出现
}
}
 class Student{
	public int age;
	public String name;
	public char blood;
	public char sex;
	public boolean isMarried;
	public void showInfo(){
		System.out.println(name+"\t"+age+"\t"+blood+"\t"+sex);}
	}

基本数据类型转换:

char[16]

byte[8] short[16] int[32] long[64] float[32] double[64]

  • 左边【取值范围小的】给右边【取值范围大的】赋值,可直接赋值;

  • 右边【取值范围大的】给左边【取值范围小的】赋值,需要强制类型转换;

  • char类型与short类型同级别,相互转换需要双向转换,他们属于交集关系;

  • char与byte也永远需要双向强转;

    public class TestOperation1{
    	public static void main(String[] args){
    
    		System.out.println(1 + 1);//2
    
    		System.out.println(1 + "1");//11
    
    		System.out.println(1 + 1 + "1");//21
    
    		System.out.println(1 + "1" + 1);//"11" + 1 = 111
    		//				  int + char + String
    		//				   1 + 49 = 50 + "1" = 501
    		System.out.println(1 + '1' + "1");
    
    		System.out.println(1 + "1" + '1');//"11" + '1' = 111
    		//			所有的运算符最小的处理单位是int
    		//				   int + int + String
    		//				   49 + 49 + "1" = 981
    		System.out.println('1' + '1' + "1");
    	}
    }
    
    int price = 500;
    
    //price = (int)(price * 0.7);//int = double
    price = price * 7 / 10;//整型
    //一个文件1024K 已经下载了512K 问下载了百分之多少?
    System.out.println(512 * 100 / 1024  + "%");//0%
    System.out.println(512 * 100 / 1024  + "%");//50%(扩大分子)
    

参数匹配2个原则:

  • 就近原则(有两个选择,选最近的)

  • 向上原则(有一个上级的,有一个下级的,选上级的)

  • public class TestDataType2{
    	public static void main(String[] args){
    		test(45);//test(char)
    	}
    	//[char]  (int)  long  float  [double]
    	public static void test(char x){
    		System.out.println("第一个参数");
    	}
    	public static void test(double x){
    		System.out.println("第二个参数");
    	}
    	//(char)  【int】  long  float  【double】
    	/*
    	public static void test(double x){
    		System.out.println("第二个方法");
    	}
    	public static void test(int x){
    		System.out.println("第一个方法");
    	}
    	*/
    
public class TestDataType3{
	public static void main(String[] args){
		short x = 200;//-32768  32767
		byte y = (byte)x;//-128  127
		/**
			short x = 200;
				200 = 128 + 64 + 8 = 0000000011001000
			byte y = (byte)x;
				11001000 -> y
				11111111 -> -1-1-2-4-16-32 = -56
				任何一个整数类型如果二进制位上全是1的话 表示该类型十进制的-1
				byte:11111111 -> -1
				short:1111111111111111 -> -1
				11111111:x
			+		   1
			    00000000 : 0
			    x + 1 = 0	x = -1
		*/
		System.out.println(y);
	}
}

引用数据类型:

  • 如何生成一个随机的三位数:
    int x = (int)(Math.random() * 900 + 100);

  • 如何生成一个a-z里面的一个字母:
    char y = (char)(Math.random() * 26 + 97);->[0,25] [97,122]

  • 如何生成一个A-Z里面的一个字母:
    char z = (char)(Math.random() * 26 + 65);//[0,25] [65 90]

1.10 十进制与二进制转换

1.10.1 整数

正数:byte 125 = 64+32+16+8+4+1=01111101

负数:正数各位取反后加一

byte -125 = 10000011

01111101-》取反:10000010

​ 加一:10000011

1.10.2 浮点数

float x = 75.75F;

1)整数部分与小数部分分别转换为二进制

70=64+4+2=1000110

0.75=11(0.75x2=1.5,0.5x2=1将小数部分乘以二取整直到没有小数为止)

70.75=1000110.11

2)转换为科学计数法:1.00011011*2(6)

3)对号入座:符号位1+幂指位8+数值位23

​ 0 10000101 00011011 000000000000000

符号位1:正数位0,负数为1

幂指位8:127+6=133=128+4+1=10000101

数值位23:取小数点后面的数不足23位在后面补0

75.75F= 01000010100011011000000000000000

public class TestDataType{
  public static void main(String[] args){
    System.out.println(2.0-1.1);
  }
}

在这里插入图片描述

  1. 2.0 - 1.1结果是多少?
    反正不是0.9

  2. 为什么会出现这个错误的结果?
    java中任何一个整数都可以用二进制精确的表达出来
    但是不代表任何一个小数也可以在有限的位置里面表达出来
    1.1在存储的时候 出现了数值位的截取 导致数值不正确

  3. 怎么解决?
    数值扩大100倍 单位缩小100倍
    BigDecimal : 大数值

import java.math.*;
public class TestDataType1{
  public static void main(String[] args){
	  BigDecimal b1=new BigDecimal("2.0");
	  BigDecimal b2=new BigDecimal("1.1");
	  BigDecimal b3=b1.subtract(b2);

    System.out.println(b3);
  }
}

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值