Java数据类型

Java数据类型

整数

long

long类型后必须加L(注意Long不是long)

long num = 10L;

long是基本的数据类型;Long是封装引用

小数(浮点数)

float

float类型后面一定要加f(大小写都行)

float num = 1.1f;

最好完全避免使用浮点数进行比较大小,因为会四舍五入变成一个约等于的数,用来比较大小不精确。

Long

long = num = 1.1L//数字后面尽量用大写L,小写的看起来像数字一

字符

char

表示一个字符,不能表示字符串(即多个字符)

char name = 'a';

字符串

String

是一个类,不是关键字

String name = "Mike";//"S"为大写 

布尔值

boolean

表示是非,只有true和false两个值

boolean flag = true;
boolean flag1 = false;

数据类型转换

强制转换 (类型)变量名

int i = 128;
byte b = (byte)i;//byte 是 -128~127 数据太大了会溢出
System.out.println(i);//128
System.out.println(b);//-128

自动转换 低–高

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

int i = 128;
double b = i;

注意点:

  1. 不能对布尔值进行转换

  2. 不能把对象类型转换为不相干的类型

  3. 在把高容量转换到低容量的时候,使用强制转换(比如double转换到int要使用强制转换)

  4. 转换的时候可能存在内存溢出,或者精度问题!

    System.out.println((int)23.7);//23
    System.out.println((int)-45.9);//-45
    

数据溢出

//操作比较大的数的时候,注意溢出问题
//JDK7新特性,数字之间可以用下划线分割
int money = 10_0000_0000;//10亿,int类型最多存放21亿多
int year = 20;
int total = money*year;//-1474836480,计算的时候溢出了
long total2 = money*year;//默认是int,转换之前已经存在问题了,结果和上面一样
long total3 = money*((long)year);//先把一个数转换为Long
System.out.println(total3);//输出正确

变量

类变量

实例变量

局部变量

public class Demo08 {

    //类变量 static;从属于类,和类一起出现和消失
    static double salary = 2500;

    //属性:变量

    //实例变量:从属于对象;如果不自行初始化,这个类型为默认值
    //布尔值:默认是false
    //除了基本类型,其余的默认值都是null
    String name;
    int age;

    //main方法
    public static void main(String[] args) {
        //局部变量:必须声明和初始化值,只在该方法内有用
        int i = 10;
        System.out.println(i);

        //变量类型 变量名  值为"new Demo08()"
        Demo08 demo08 = new Demo08();//new Demo()后加上".var"可以快速打出来;alt+回车键也能打出来
        System.out.println(demo08.age);//0
        System.out.println(demo08.name);//null

        //类变量
        System.out.println(salary);
    }

    //其他方法
    public void add()
    {
        //System.out.println(i);
    }
}

常量

public class Demo09 {

    //常量final,常量名一般使用大写字母表示
    //final是修饰符,不存在先后顺序
    static final double PI = 3.14;

    public static void main(String[] args) {
        System.out.println(PI);
    }
}

变量的命名规范

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aKQZuKaI-1612368272353)(F:\ruanjian\Intellij IDEA\截图\变量的命名规范.png)]

基本运算符 优先级使用()

二元运算符

package operator;//这句话不能删

public class Demo01 {
    public static void main(String[] args) {
        //二元运算符
        int a = 10;
        int b = 20;
        int c = 25;
        int d = 25;

        System.out.println(a+b);//30
        System.out.println(a-b);//-10
        System.out.println(a*b);//200
        System.out.println(a/b);//0,有小数int类型会四舍五入所以变成0
        System.out.println(a/(double)b);//0.5
    }
}

运算符和类型转换

public class Demo02 {
    public static void main(String[] args) {
        long a = 10000000000000L;
        int b = 123;
        short c = 10;
        byte d = 8;

        //不同类型混合运算无论是赋值还是运算都是向高位转
        System.out.println(a+b+c+d);//为Long类型
        System.out.println(b+c+d);//Int
        System.out.println(c+d);//Int
    }
}

比较运算符

public class Demo03 {
    public static void main(String[] args) {
        //关系运算符返回的结果:true或false 布尔值
        int a = 10;
        int b = 20;
        int c = 21;

        //取余  模预算
       System.out.println(c%a);//  c/a->21/10=2...1

        System.out.println(a>b);//false
        System.out.println(a<b);//true
        System.out.println(a==b);//false
        System.out.println(a!=b);//true
    }
}

自增自减

//++ 自增 -- 自减   一元运算符
int a = 3;

//执行这行代码后,先给b赋值,再自增
int b = a++;
System.out.println(b);//3
System.out.println(a);//4

//执行这行代码前,先自增,再给c赋值
int c = ++a;
System.out.println(a);//5
System.out.println(c);//5

//幂运算 3^2->3*3=9;使用Math数学工具类
double pow = Math.pow(3,2);//3*3=9
System.out.println(pow);//9

逻辑运算

//与(and)    或(or)   非(取反)
boolean a = true;
boolean b = false;

//逻辑与运算:两个变量都为真,结果才为真
//此时(b&&a)中的b为假,则后面a的判断代码就不在执行
System.out.println("a&&b:" + (b&&a));//false

//逻辑或运算:两个变量都为假,结果才为假
System.out.println("a||b:" + (a||b));//true

//取反:如果是真,结果为假;如果是假,结果为真
System.out.println("!(a&&b):" + !(a&&b));//true

//短路运算:检测上面逻辑与运算
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d);//false
System.out.println(c);//5,所以后面的(c++<4)没有运算

位运算(面试题,要了解)

例:
A = 0011 1100
B = 0000 1101

//与运算:两个都为1时才为1,否则为0
A&B = 0000 1100

//或运算:两个都为0时才为0,否则为1
A|B = 0011 1101

//异或:两个相同为0,不相同为1
A^B = 0011 0001

//取反:0变为1,1变为0
~B = 1111 0010

面试可能会问的:
2乘8怎么写代码效率最高?
一般人会写2*8 = 16 即计算机会2*2*2*2

计算机是二进制的
0000 0000	0
0000 0001	1
0000 0010	2
0000 0011	3
0000 0100	4
0000 0101	5
0000 0110	6
0000 0111	7
0000 1000	8
0001 0000	16

这里使用"<<"(左移运算符,乘法)和">>"(右移运算符,除法)
2<<3 即向左移三位(看二进制),即2乘上3个2=2*8=16
左移和右移运算符效率极高!!!
最终代码编写结果如下:
System.out.println(2<<3);

扩展赋值运算符(面试)

int a = 10;
int b = 20;

a+=b;//a = a+b
a-=b;//a = a-b

面试:
//字符串连接符    +   ,String;只要“+”任意一边又String类型,结果都为String类型
System.out.println(""+a+b);//1020;因为""在前面,所以直接全面判断为String类型
System.out.println(a+b+"");//30;因为前面两个是int类型,所以先相加

三元运算符(必须掌握)

//x?y:z
//如果x==true,则结果为y,否则结果为z
int score = 80;
String type = score < 60 ? "不及格":"及格";
System.out.println(type);//及格
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值