Java变量、数据类型、运算符

在这里插入图片描述

变量

定义

表示数据在内存的内存地址,变量对应的数据是可以改变的;

变量的使用

  • 声明变量(申请内存地址)
    数据类型 变量名; int a;
  • 初始化(赋值)
    变量名 = 值; a = 10;
  • 变量的使用
    System.out.println(a);
public class Demo01{	
	public static void main(String[] args){
		/*
			//方式1:		
			//1、申明变量
			int a;
			//2、变量赋值
			a = 10;
			//3、使用变量
			System.out.println(a);		
		*/
		/*
			//方式2:
			//1、申明变量申明变量和变量初始化
			int a = 10;
			//2、使用变量
			System.out.println("a的值为:"+a);
		*/
		
		//方式3:
		
		//连续定义多个变量     int a; int b; int c = 10;
		int a,b,c = 10;
		
		// System.out.println("a的值为:"+a); 错误代码
		System.out.println("c的值为:"+c); 	
		
		//注意:在java中变量一定要初始化才能使用
	}
}

变量的命名规范

  • 只能是数字、字母、下划线、美元$符号组成
  • 不能使用数字开头
  • 不能使用java中的关键字和保留字
  • 使用驼峰命名法(两个单词以上组成变量)
  • 见名知意
  • java中区分大小写

基本数据类型

在这里插入图片描述
在这里插入图片描述

数据类型细节
  • float类型最后需要加F或者f
  • long类型最后需要加L
  • 任何一个整数都默认当做int类型来处理
  • 任何一个小数都默认当做double类型来处理
转义字符
  • 换行 \n
  • 制表符 \t
  • 双引号 "
  • 反斜杠 \
数据类型的转换
自动转换
  • 在数据类型兼容的情况下, 小转大就是自动类型转换
  • 自动转换也称为隐式转换,不需要做任何操作
    示例:
byte a = 1;
//将byte类型转换为int类型
int b = a;
强制转换

-在数据类型兼容的情况下,大转小就是强制转换
语法:(转换类型)变量

double a = 10.2;
//将double类型强制转换成int类型,可能会导致精度的丢失
int b = (int)a;
注意事项
  • boolean类型不参与任何数据的类型转换
  • 基本数据类的大小为:byte short\char int long float double
  • 强制类型转换可能会导致精度的丢失
  • 表达式中最大是double,则结果是double
  • 表达式中最大是float,结果float
  • 表达式中最大是long,结果long
  • 表达式中最大是int,结果int
  • 表达式中有char、byte、short,结果为int

运算符

算数运算符
  • +(加) 在字符串中是拼接的意思,还是加法运算符
  • -(减)
  • *(乘)
  • /(除)
  • %(取模)
  • ++(自增,自身+1),当自增运算符参与运算时,++在前,则自身+1,再进行赋值,++在后,则是先进行赋值,再进行自身+1;
  • –(自减,自身-1),当自减运算符参与运算时,–在前,则自身-1,再进行赋值,–在后,则是先进行赋值,再进行自身-1;
赋值运算符
  • 赋值运算符= += -= *= /= %=
int a = 10;
int b = 20;
a+=b;  //等同于a = a+b;
System.out.println(a);
a-=b; //等同于a = a-b;
System.out.println(a);
a*=b; //等同于a = a*b;
System.out.println(a);
a/=b; //等同于a = a/b;
System.out.println(a);
a%=b; //等同于a = a%b;
System.out.println(a);
关系运算符
  • 关系运算符 > < >= <= != == 结果为boolean类型
int a = 10;
int b = 20;
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a>=b);
System.out.println(a<=b);
System.out.println(a!=b);
System.out.println(a==b);
逻辑运算符
  • && (与) || (或) ! (非,取反)
  • 面试题:
    短路&& 、||和&、|区别:
    短路&&:只要有一个表达式为false时,则后边的表达式就不会再执行
    短路||:只要有一个表达式为true时,则后边的表达式就不会再执行
    &:无论结果如何都会执行完整个表达式
    |:无论结果如何都会执行完整个表达式
//&& 与 当运算符两边的表达式都为真时,结果才为真
int a=10;
int b=20;
System.out.println(a<b&&a!=b); //true
System.out.println(a>b&&a!=b); //false
System.out.println(a!=b&&a>=b); //false
System.out.println(a>=b&&a==b); //false

//|| 或 当运算符两边有一个为真,结果就为真
System.out.println(a<b||a!=b); //true 
System.out.println(a>b||a!=b); //true
System.out.println(a!=b||a>=b); //true
System.out.println(a>=b&&a==b); //false

// ! 对结果取反
System.out.println(!true); //false
三目运算符
  • boolean类型表达式 ? 结果1 : 结果2;
int age=3;
String str = age>18?"成年人":"未成年人";
System.out.println(str);
  • 三目运算符的嵌套使用
String str1 = age>18?age<40?"青年人":"老年人":"未成年人";
System.out.println(str1);
位运算符

只针对二进制进行操作
按位与& 相同位置上,同为1则为1
按位或| 相同位置上,同为0则为0
按位异或^ 相同位置上,相同则为0,不同为1
按位取反~ 0->1,1->0
左移 << 将二进制数位整体向左移动N位,低位补0
右移 >> 将二进制数位整体向右移动N位。如果是正数补0,负数补1
无符号右移(必须是32位) >>> 将二进制数位整体向右移动N位。高位补0

//5按位与9
//5     00000101
//9     00001001
//结果  00000001       
System.out.println(5&9);//1
//5按位或9
//5     00000101
//9     00001001
//结果  00001101
System.out.println(5|9);//13
//5按位异或9
//5     00000101
//9     00001001
//结果  00001100
System.out.println(5^9);//12
//10按位取反   00001010
//             11110101 最高位是1,为负数,这个是补码
//反码         11110100
//原码         10001011
System.out.println(~10);//-11

//10 左移2位   00001010
//             00101000		
System.out.println(10<<2);//40
//10 右移2位   00001010
//             00000010				
System.out.println(10>>2);//2
//-10 原码:10001010
//    反码: 11110101
//    补码: 11110110
//右移2位   11111101
System.out.println(-10>>2);//-3
//15   0000 0000 0000 0000 0000 0000 0000 1111
//无符号右移2
//     0000 0000 0000 0000 0000 0000 0000 0011
System.out.println(15>>>2); //3
//-15              1000 0000 0000 0000 0000 0000 0000 1111
//无符号右移2
//反码             1111 1111 1111 1111 1111 1111 1111 0000
//补码             1111 1111 1111 1111 1111 1111 1111 0001
//无符号右移2      0011 1111 1111 1111 1111 1111 1111 1100
System.out.println(-15>>>2); //1073741820

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值