• Java的基本数据类型和运算


    编码

    ASCII--0~127  65-A  97-a

    西欧码表---ISO-8859-1---0-255---1个字节

    gb2312----0-65535---gbk---2个字节

    Unicode编码体系---utf-8---3个字节

    中  f

    bit位 Byte字节 1Byte = 8bit   1KB=1024B  MB GB TB PB---计算机中存储单位

    常量

    整数常量---所有的整数 3,99,107

    小数常量---所有的小数  3.5  100.9

    字符常量---用单引号将一个字母、数字、符号标识起来 ‘a’  ‘=’ ‘ ’

    字符串常量---用双引号将一个或者多个字符标识起来 “abc” “234” “q2” “”

    布尔常量---用于表示逻辑值---true/false

    空常量---null

    5-整数, 5.0-小数  ‘5’-字符 “5”-字符串 ‘5.0’-写法错误 “5.0”-字符串

    进制

    二进制:满二进一,0~1 1+1=10 0b10011 0b0011,从JDK1.7开始,允许以0b作为开头来标识一个数字是一个二进制数字

    八进制:满八进一,0~7, 7+1=10 要求必须以0作为开头 06  015

    十进制:满十进一,0~9

    十六进制:满十六进一,0~9,,A~F,9+1=A f+1=10 要求以0x作为开头 0x5  0xad

    进制的转换

    十进制转换成二进制:不断除以2取余,然后将余数倒排

    二进制转换成十进制:从低位次起,按位次乘以2的位次次幂,然后求和

    二进制转换成八进制:从低位次起,每三位划分为一组,不足三位补0,产生一位八进制数字,将这些数字按序排列即可

    八进制转换成二进制:一变三---一位八进制数字产生三位二进制数字

    二进制转换成十六进制:四变一的过程

    变量

    System.out.println(i);

    int i = 5;---不行---变量必须先声明在使用

    int i;

    System.out.println(i);---不行----变量在使用之前必须先初始化

    数据类型

    基本数据类型

    数值型

    整数型

    byte---字节型---1个字节--- -2^7~2^7-1 --- -128~127

    byte b = 5; byte b2 = -128;

    short---短整型---2个字节--- -2^15~2^15-1 --- -32768~32767

    short s = 54; short s = -900;

    int---整型---4个字节--- -2^31~2^31-1

    int i = 100000;

    int  j = 100_000_000;--从JDK1.7开始是允许的。在编译的时候会自动忽略这些_ ->  int  j = 100000000;

    int  i = 00001111;---八进制

    Java中整数默认类型就是int

    long---长整型---8个字节--- -2^63~2^63-1---以L作为结尾标识这个数字是一个long类型的数字

    long l = 3L;

    浮点型

    float---单精度---4个字节---必须以f作为结尾

    float f = 3.2f;

    double---双精度---8个字节

    Java中小数默认是double类型

    double d = 3.5;

    double d = 4.6D;---可以

    double d = 3.9e4; //是十进制的科学计数法

    double d = 0x3p2; //是十六进制的科学计数法  -> 12

    字符型

    char---2个字节--- 0 ~65535

    char c  = ‘a’;

    char c = ‘中’;

    布尔型

    boolean---true/false

    boolean b = false;

    引用数据类型

    类---class  接口---interface   数组---[]

    数据类型的转换

    隐式转换/自动类型转换

    byte b = 100;

    int i = b;

    long l = 63;---可以---当整数的值在int类型的范围内的时候,可以不用添加L这个结尾

    规律一:小的类型可以转化为大的类型---byte->short->int->long  float->double

    int i = 5;

    float f = i;

    long l = 6;

    float f = l;

    规律二:整数可以转化为小数,但是可能产生精度损失

    char c = ‘a’;

    int i = c;

    规律三:字符型可以转化为整型

    short s = ‘a’;---可以

    char c = 100;---可以

    char c = ‘a’;

    short s = c;---不可以

    定义了char类型的变量c,存储的数据是一个字符,不需要检查具体的字符编码,当赋值给short类型的时候,short需要检查这个字符对应的编码是否在short类型的取值范围内,这个时候无法确定这个字符对应的具体编码,由于short类型的取值范围和char类型没有完全重合,为了防止出现超过范围的情况,不允许赋值。

    short s = 97;

    char c = s;--不可以

    显式转换/强制类型转换

    long l = 54;

    int i = (int)l;

    double d = 3.5;

    int i = (int)d;---小数强转成整数的时候,小数部分直接舍弃

    double类型不能精确存储小数

    Hexadecimal--十六进制

    Decimal--十进制

    Octal---八进制

    Binary--二进制

    运算符

    算术运算符

    +加 -减 *乘 /除 %取模 ++自增 --自减 +字符串拼接

    int i = 5210 / 1000 * 1000;--->i = 5000;

    注意:

    1. 整数运算完成之后结果一定是整数

    2. 整数除以0的时候,编译通过,运行报错---ArimeticException---算术异常

    3. 小数除以0的结果是Infinity

    4. 0/0.0的结果是NaN---Not a Number---非数字

    5. byte/short类型在运算的时候会自动提升为int类型

    %取余运算

    -5%3=-2   -4%3=-1  -3%7=-3

    5%-3=2  7%-2=1  2%-8=2

    -5%-3=-2  -9%-3=0

    对于负数的取余,先按照正数的取余运算,看取余符号左边的数字的符号,如果左边是负数,那么结果就是负数

    5%1.2=0.2   6%1.3=0.8

    4.3%1.4=0.1

    ++/--

    对于++在原来的基础上自增1

    int i = 5;

    int j = ++i;---> i自增1,然后将i的值赋值给j---先自增,再运算

    int j = i++;--->先获取i的值5,i自增变成6,然后将获取的值5赋值给j---先运算,再自增

    int i = 3;

    int j = ++i * 2;-> j = 8;

    int j = i++ * 2;->j = 6

    int i = 6;

    int j = i++ + ++i;->i = 8;  j = 14;

    int j = ++i + i++;->i = 8; j = 14 

    byte b = 5;

    b++;---JVM在底层会对结果进行强制类型转换,将结果再转换为byte类型

    char c = ‘a’;

    System.out.println(c + 4);--可以

    char c2 = ‘d’;

    System.out.println(c + c2);---提升为int类型之后再进行运算

    + 字符串拼接运算

    “a” + “b”---> “ab”

    “a” + 3---> “a3”

    “a” + true-> “atrue”

    2 + 4 + “f”-> “6f”

    “f” + 2 + 4-> “f24”

    赋值运算符

    = += -= *= /= %= &= |= ^= <<= >>= >>>= ~=

    int i= 5;

    i += 3; -> i = i + 3; -> i = 8;

    i -= 2;-> i = i - 2;-> i = 3;

    int j;

    j += 4;---不行

    int i = 5;

    i += i -= i *= 5;--> i = -15;

    i = 5 + ( 5 - (5 * 5)) ;

    i += i -= i *= ++i;--->i = -20;

    i += i*= i-= (i++ + --i);---> i = -20;

    i = 5 + ( 5 * (5 - (5 + 5)));

    byte b = 5;

    b += 3;---可以

    byte b = 125;

    b += 3;---可以--- -128

    比较/关系运算符

    ==相等 !=不等 > < >= <= instanceof

    3 == 4;-> false

    instanceof---判断对象与类的关系的--只能用于引用数据类型

    String s = “abd”;

    System.out.println(s instanceof String);---true

    System.out.println(“def” instanceof String);---true

    逻辑运算符

    用于运算逻辑值

    &与 |或 !非 ^异或 &&短路与 ||短路或

    true&true=true true&false=false false&true=false false&false=false

    true|true=true true|false=true false|true=true false|false=false

    !true=false !false=true

    true^true=false true^false=true false^true=true false^false=false

    对于&&,如果前一个表达式的值为false,那么就能确定整个表达式的值为false,&&后边的运算就不再进行了

    三元/三目/条件运算符

    逻辑值?表达式1:表达式2

    如果逻辑值为true,执行表达式1;反之执行表达式2

    int i = 5, j = 7;

    i > j ? System.out.println(i): System.out.println(j);---不行!三元运算符运算完成之后必须有结果!

    double d = i > j ? i  * 2.5 : j;---两个表达式的返回值类型要么一致,要么相容

    从控制台获取数据

    import java.util.Scanner; //写在package之下,class 之上

    Scanner s = new Scanner(System.in);

    int i = s.nextInt();

    double d = s.nextDouble();

    String str = s.nextLine();

    String str2 = s.next();

  • 相关阅读:
    JAVA开发人员画图表总结(ECHARTS)
    Spring Validation 表单校验
    Java BIO、NIO、AIO 学习
    JAVA笔试题
    JAVA GC优化入门
    jstat 使用日志
    JAVA内存泄漏
    JAVA 线程池入门事例
    JAVA Semaphore
    Serializable 介绍
  • 原文地址:https://www.cnblogs.com/zhouguanglin/p/7190630.html
Copyright © 2020-2023  润新知