Java入门(四)

Java入门(四)

数据类型

  • java是一种强类型语言,要求十分严格。要求变量必须先定义后使用。一旦定义了某个变量指定了某个数据类型,如果不经过转换他就永远是这个类型了。
  • 强类型好处是安全性高,但速度会比较慢。
  • 强类型语言对应的是弱类型语言,强类型语言更严谨可以避免更多的错误。比如javascript可以随便玩变量,字符串的’12’加上3就可以变成两种类型,'123’或者123 。他们之所以写的那么随意,是因为他们的编辑器做了一些规范化。
public class Demo02 {
    public static void main(String[] args) {
//        String a = "";
        String a;
        System.out.println(a);
    }
}
  • 上面这个代码没有给String a 赋值,会出现以下报错
    在这里插入图片描述
  • 假如把String a 赋值 10,就会报错。因为他不是字符串
String a = 10;

在这里插入图片描述

  • 10可以用int来类型。如果int用一个字符串来表示也会报错
int num = "hello";

在这里插入图片描述

  • 可以写成这样hello跟10都被输出出来了。变量时可以变化的量,需要一个数据类型,变量名字然后给他赋一个值。
public class Demo02 {
    public static void main(String[] args) {
        String a = "hello";
        int num = 10;
        System.out.println(a);
        System.out.println(num);
    }
}
  • java的数据类型分为两大类:基本类型(primitive type)和引用类型(reference type)
  • 基本类型分为数字、字符,数字还分为小数和整数,最后还有一个布尔类型表示是非。
  • 整数里面分为 byte、short、int、long,他们都可以代表整数,但是大小范围不一样。byte占一个字节范围:-128~127。short占两个字节范围:-32768 ~ 32767。int占4个字节范围:-2147483648 - 2147483647。long占8个字节范围:-9223372036854775808-9223372036854775807 。
  • 小数里分为double和float 。double占8个字节,我们一般用double。float占四个字节。float是单精度类型,精度是8位有效数字,取值范围是10的-38次方到10的38次方。double是双精度类型,精度是17位有效数字,范围是10的-308次方到10的308次方。当你不声明的时候,小数都用double来表示,所以用float的时候要在后面加上f。
  • char 表示一个字符。占两个字节
  • boolean类型只有true和false两个,占一位。
  • 现在来看一下八大数据类型。假如byte超出127就会报错
byte num2 = 200;

在这里插入图片描述

  • long是比较特殊,long这么长那么是怎么知道他用了long呢?一般定义这个类型会在数字最后加上大写L
long num4 = 30L;
  • 而小数Float后面也要跟个F标志,不然他会找到double类型
float num5 = 40.1;

在这里插入图片描述

float num5 = 40.1F;
double num6 =  3.1415926535;
  • 字符类型(要用单引号)。假如我写两个字符,他就会报错。只能写一个
char name = ‘秦疆';

在这里插入图片描述

  • 表示字符串的String他没有颜色,他不是一个关键词。他是一个类。
  • 最后还有布尔值boolean
boolean flag = true;
boolean flag2 = false;
  • int 会对应一个类Integer

在这里插入图片描述

  • 最大值是 2的31次方减1,最小值是-2的31次方。除了int,byte也有(Byte)
    在这里插入图片描述
  • 后面学到类对应的基本类型的包装类会学到。
  • 除了基本类型之外还有一种引用类型。有类、接口、数组
  • 位是计算机最小计算单位,11001100是一个八位二进制数,最底层的单位。
  • 字节是计算机处理数据的单位,一个字节等于八个位。
  • 电脑32位和64位的区别:32位只能装32位的cpu,而64位既能装64也能装32位的cpu。寻址能力:64支持128g内存,32只能支持4gb。
  • 字符:是指计算机中使用的字母、数字、字和符号。
  • 1024b = 1Kb ,1024kb = 1Mb , 1024Mb = 1Gb, 1024Gb = 1Tb 。

面试题

  • 整数拓展,进制。二进制、八进制、十进制、十六进制在java当中怎么表示呢?
  1. 二进制一般以0b开头
  2. 十进制直接表示即可
  3. 八进制是以0开头的
  4. 十六进制是以0x开头的
int i = 10 ;
int i2 = 010;   // 代表八进制
int i3 = 0x10;  //代表十六进制
System.out.println(i);
System.out.println(i2);
System.out.println(i3);

在这里插入图片描述

  • 十六进制还有 A-F
  • 浮点数拓展。银行业务怎么表示?在用float关键词、double都是有问题的。下面代码,从中文他们都代表0.1 ,我们来看看他们是否相等
float f = 0.1f;
double d = 1.0/10;
System.out.println(f==d);
System.out.println(f);
System.out.println(d);

在这里插入图片描述

  • 我们选择debug按钮,在System.out.println(f==d);这里debug
    在这里插入图片描述
    在这里插入图片描述
  • 在写一个,看d1和d2的结果值是不是一样的
float d1 =  2313131313123123123f;
float d2 = d1 + 1;
System.out.println(d1==d2);

在这里插入图片描述

  • 上面两个数是不一样的,加完一竟然还等于他本身。浮点数存在一些问题,浮点数能够表现的字长是有限的,同时也是离散的,浮点数存在舍入误差的问题。由于很多数字无法精确的表示,只能是一个大约数,接近但不等于。
  • 最好完全避免使用浮点数去进行比较。这样是不行的,而银行业务我们会学一个类叫bigdemcimal,数学工具类。少用浮点数比较,如果要计算而且不能有误差,那就用java写好的类叫bigdemcimal。
  • 除了浮点数还有字符的拓展,我们可以把一下两个字符转化为数字。用int()进行强制转换。
char c1 = 'a';
char c2 = '中';
System.out.println((int)c1);
System.out.println((int)c2);

在这里插入图片描述

  • 所有的字符本质还是数字,char类型涉及到编码问题,unicode编码可以处理各种语言的文字,unicode占两个字节最长可以表示65536个字节。他会从 U0000表示到UFFFF的区间范围。\u 表示给他转义
char c3 = '\u0061';
System.out.println(c3);
  • 转义字符,\t代表制表符
System.out.println("Hello\tWorld");

在这里插入图片描述

  • 除了tab,还有\n可以换行
System.out.println("Hello\nWorld");

在这里插入图片描述

String  sa = new String("hello world");
String  sb = new String("hello world");
System.out.println(sa==sb);

在这里插入图片描述

String sc = "hello world";
String sd = "hello world";
System.out.println(sc==sd);

在这里插入图片描述

  • 可以看到第一个sa和sb是不相等的。以后再对象的时候从内存分析就会知道为什么不一样的了。
  • 布尔值的扩展
boolean flag = true;
if (flag==true){
	//如果等于真就执行一行代码,否则就不执行
}
//但是有的代码不会把==true写出来
boolean flag = true;
if (flag){
	// ......
}

上面的代码是一样的,判断的是true。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值