Java笔记-03 数据类型和运算符

注释

  • 单行注释 //
  • 多行注释 /*开头 。。。。 */结尾,可以用做行内注释
  • 文档注释 代码开头 /**开头,*/结尾
  • 注释的内容被编译时丢弃

标识符

  • 给变量、类、方法、包命名
  • 必须以字母、 _下划线、 美元符$开头。字母包括英文的,汉语德语法语等
  • 其它部分可以是字母、 下划线“_”、 美元符“$”和数字的任意组合
  • 大小写敏感, 长度无限制。
  • 不可以是Java的关键字
  • 类名规范:每个单词的首字母大写
  • 方法和变量名:第一个单词小写,其余的单词首字母大写,其余的小写

关键字

  • Java语言保留供内部使用的
    在这里插入图片描述

变量

  • 变量,可操作的存储空间
  • Java是一种强类型语言, 每个变量都必须声明其类型
  • Java变量是程序中最基本的存储单元, 其要素包括变量名, 变量类型和作用域。
  • 变量在使用前必须对其声明, 只有在变量声明以后, 才能为其分配相应长度的存储单元。可以只声明不初始化,不使用,使用时必须声明并初始化。

变量分类

  • 局部变量:属于方法,语句块内部,大括号内部
  • 成员变量:类内部,方法外部,属于对象。对象创建,成员变量也跟着创建。对象消失,成员变量也跟着消失;如果不自行初始化,它会自动初始化成该类型的默认初始值。使用时得创建对象。
数据类型初始值
int0
double0.0
char‘\u0000’
booleanfalse
  • 静态变量:使用static定义, 从属于类,生命周期伴随类始终,从类加载到卸载。
public class Test1 {
    int x = 10; //成员变量
    static int y = 20;//静态变量
    
    public static void main(String[] args) {
        int z =30; //局部变量
        
        Test1 t1 = new Test1();
        System.out.println(t1.x);
        System.out.println(y);
        System.out.println(t1.y);
    }
}

常量

  • 不能修改的,例如数字,字符串
  • 变量使用final修饰变为常量
  • 常量命名使用大写字母和下划线

基本数据类型

  • 数值型- byte(1字节)、 short(2字节)、int(4字节)、 long(8字节)、float(4字节)、 double(8字节),一位为符号。均为有符号的。

  • 字符型- char(2字节),无符号 0 - 65535

  • 布尔型-boolean(1位)

  • 引用数据类型:类、接口、数组,4个字节,记录地址

  • 对于整型,八进制:0开头,十六进制:0x或0X开头,二进制:0b或0B开头

  • 长整型,数字后面加L,例如long a = 12345L

  • 浮点型,float和double。float类型: 单精度类型, 尾数可以精确到7位有效数字, 在很多情况下, float类型的精度很难满足需求。 double类型: 双精度类型 精度是float类型的两倍, 绝大部分应用程序都采用double类型。 浮点常量默认为double。 要变为float, 需在后面增加F/f. 如: 3.14F。浮点数存在舍入误差, 很多数字不能精确表示。 如果需要进行不产生舍入误差的精确数字计算, 需要使用BigDecimal类

  • 小数类型科学计数法,3e4,或3.14E10

  • 精确的浮点,使用BigDecimal,BigDecimal.valueOf(100009.0),可以用来比较

  • 字符型,2字节,无符号,65536个字符,Unicode,使用单引号表示。本质上是数字,0-65535。或者’\u12345’,转义字符

  • 字符串,双引号中

  • 布尔类型,boolean,两个值,true或false,与0和非0没有关系。boolean man = true;

运算符

  • 运算符
    在这里插入图片描述
  • 整数运算:

1. 如果两个操作数有一个为Long, 则结果也为long。

2. 没有long时,结果为int。即使操作数全为short,byte,结果也是int。

  • 浮点运算:

1. 如果两个操作数有一个为double,则结果为double。

2. 只有两个操作数都是float,则结果才为float。

  • 取模运算,其操作数可以为浮点数,一般使用整数,结果是“余数”,“余数”符号和左边操作数相同
  • ++,- -。b = a++,先将a赋值给b,a再加1。b = ++a,a先增加1,再赋值给b
int a = 2;
int b = a++; //a = 3,b = 2
int c = ++a; //a = 4,c = 4
  • 赋值和扩展赋值,=,+=,-=,*=,/=,%=。赋值运算符优先级比较低
b += 3;// b = b + 3
b *= 5 +3; // b = b * (5 +3)
  • 关系运算符,结果是boolean类型。==、!= 是所有(基本和引用)数据类型都可以使用。> 、>=、 <、 <= 仅针对数值类型(byte/short/int/long, float/double。以及char)
  • 逻辑运算符,操作boolean。
    在这里插入图片描述
//异或
System.out.println(true ^ false); //true
System.out.println(true ^ true); //false
System.out.println(false ^ false); //false
System.out.println(false ^ true); //true
//短路或
System.out.println(3 > 2 || (3 / 0)>2); //短路或,直接为true
System.out.println(3 > 2 | (3 / 0)>2); //或,会报错
  • 位运算符 。&和|既是逻辑运算符,也是位运算符。如果两侧操作数都是boolean类型,就作为逻辑运算符。如果两侧的操作数是整数类型,就是位运算符。
    在这里插入图片描述
    在这里插入图片描述
System.out.println(3 | 4); //按位或 7
System.out.println(3 & 4); //按位与 0
System.out.println(3 ^ 4); //按位异或 7
System.out.println(~3); //取反 -4
System.out.println(2 << 3); //左移,几位就乘2的多少次方 16
System.out.println(4 >> 2); //右移,除,1
  • 字符串连接符,即 + ,左右两边只要有一个是字符串就是连接字符串,结果为字符串
String s = "s";
int a1 = 3;
int a2 = 4;
char c1 = 'c';
System.out.println(s + a1); //s3
System.out.println(a1 + a2 +s); //7s
System.out.println(s + c1); //sc
System.out.println(a1 + c1); //102
System.out.println(c1 + a1); //102
  • 条件运算符,X ? Y : Z,如果X为true则返回Y,否则返回Z
System.out.println(3 > 2 ? 5 : 4);
  • 运算符优先级,小括号的优先级最高。条件判断非>与>或,例如a || b && c,先算后面的b&&c
    在这里插入图片描述

类型转换

自动类型转换

  • 自动类型转换指的是容量小的数据类型可以自动转换为容量大的数据类型,赋值时可以直接赋值
  • 可以将整型常量直接赋值给byte、 short、 char等类型变量,而不需要进行强制类型转换,只要不超出其表数范围即可
    在这里插入图片描述
byte a = 10;
short b = 20;
int c = 30000;
long d = 40L;
b = a;
c = a;
c = b;
d = a;
d = b;
d = c;
// b = c ; //不行
//c = d; //不行
b = (short)c; //强制类型转换
c = (int)d;
int e = 257;
a = (byte)e; // 1

强制类型转换

  • 强制类型转换,又被称为造型,用于显式的转换一个数值的类型。在有可能丢失信息的情况下进行的转换是通过造型来完成的,但可能造成精度降低或溢出。例如(byte)1000
  • 注意数比较大的时候是否会溢出,如果会溢出,将先强制转换为范围大的再运算,long类型的使用大写的L。

键盘输入

  • 从键盘获取变量的值
import java.util.Scanner
public class TestKeyboardInput {
    public static void main(String[] args) {
       Scanner scanner = new Scanner(System.in);
        System.out.println("输入姓名:");
        String name = scanner.nextLine();
        System.out.println("输入年龄:");
        int age = scanner.nextInt();
        System.out.println("----------------");
        System.out.println("姓名:"+name+"\n年龄:"+age);
        System.out.println("来到地球的天数:" + age * 365);
        System.out.printf("距离离开地球还剩:%s天",(100-age)*365);
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

独孤尚亮dugushangliang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值