02 变量、数据类型等

day 02

1.关键字

  • 被Java语言赋予了特殊含义的单词
  • 每个关键都有自己特殊的含义和特定的使用场景

特点:

  • 关键字全部都是小写
  • 在一些高级编辑工具里面,关键字是有自己的特殊颜色标记的,例如在Notepad++里面关键字表现为紫色
  • main不是关键字,但是也被JVM赋予了特殊的含义,JVM只识别它

2.标识符

  • 对类,接口,变量和方法进行起名字的字符序列就叫做标识符

组成规则:

  • 英文字母大小
  • 可以有数字,但不能以数字开头
  • 符号只有$和_

注意事项:

  • 不能以数字开头
  • 不能是Java中的关键字
  • 区分大小写

命名规范:

1).对类,接口进行起名字时,应遵循大驼峰命名法

  • 如果是一个单词组成,那么首字母大写,其余字母小写

例:

Demo,Day01
  • 如果是多个单词组成,那么所有的单词首字母大写,其余字母小写

例:

HelloWorld,DataClass

2).对方法,变量进行起名字时,应遵循小驼峰命名法

  • 如果是一个单词组成,那么所有字母小写

例:

main,show
  • 如果是多个单词组成,那么出了第一个单词全部小写以外,其余单词首字母均大写,其他字母小写

例:

getMoney,getNameAndAge

3).常量的命名

  • 定义常量时经常要在常量前面加上final修饰符

  • 常量在定义时进行初始化后就不可再次赋值,再次赋值会导致编译错误

  • 如果是一个单词组成,所有字母大写

例:

PI
  • 如果是多个单词连用,除了字母全部大写外,每个单词之间还要用_连起来

例:

HELLO_WORLD

4).的命名

如果是单级包 ,那么小写就行
如果是多级包 ,多级包的命名是以.进行连接 ,每个.前后都是一个文件夹;此时应该使用域名倒写的情况去命名

com.doit.demo1
com.doit.demo2

3.常量

  • 值不能再去发生任何改变 叫做常量

分类:

a.字面值常量

  • 整数常量:所有的整数,包括负数和正数
  • 小数常量:所有的小数
  • 字符常量:被’‘包括起来的字符称之为字符常量,而且’'中只能有一个字符;例如:‘a’,‘中’
  • 字符串常量:凡是被""包括起来的,都称之为字符串常量;例如:“欢迎来到北京!”
  • 布尔常量:true false
  • 空常量:null

b.自定义常量

  • 被final修饰的变量
final PI=3.14

表现形式:(计算机只能识别二进制)

a.进制(逢几进一)的分类和组成

  • 十进制(最常见):逢十进一 1—9
  • 二进制:逢二进一 1—2 二进制需要在前面加上0b
  • 八进制:逢八进一 1—8 八进制需要在前面加上0
  • 十六进制:逢十六进一 1—F 10—15分别由A B C D E F表示 十六进制需要在前面加上0x

b.进制之间的转换

  • 其他进制转十进制

每一位上的数乘以对应进制数的位数减一次方,做累加

  • 十进制转其他进制

转成几进制就除以几,直到商为0,把余数反转

c.快速转码法

8421码: 用于十进制和二进制之间的相互转换

1 1 1 1 1 1 1 1

128 64 32 16 8 4 2 1

0b1101 1011 = 128+64+16+8+2+1= 219 用1所代表的数字做累加

0b1001 0111 = 128+16+4+2+1=151

56 = 0b0011 1000 和码表逐位相减,能减为1,不能减为0

69 = 0b0100 0101

二进制和八进制,十六进制的相互转换

a).

000 001 010 011 100 101 110 111

0 1 2 3 4 5 6 7

二进制转成八进制: 3位的二进制转成1位的八进制

0b100 101 101=0455

0b011 101 011 011=03533

八进制转二进制: 1位八进制转成3位的二进制

07654 = 0b111 110 101 100

0613 = 0b110 001 011

b).

0000 - 1111 = 0-15 = 0-f

二进制转十六进制: 4位的二进制转成1位的十六进制

0b111 1010 1110 = 0x7ae

0b1101 1010 1111 = 0xdaf

十六进制转成二进制: 1位的十六进制转成4位的二进制

0xf754 = 0b1111 0111 0101 0100
0xe12 = 0b1110 0001 0010

d.x进制和y进制之间的转换

通过十进制作为桥梁进行转换 : x进制转成十进制, 十进制的数转成y进制​

有符号数的表示方法:(主要为了表示负数)

  • 计算机中存储的都是二进制的补码

原码: 用最高位表示符号,其他为表示数值, 正数的符号位是0,负数的符号位是1

​ 原码: 0000 0111

​ 原码: 1000 0111

反码: 正数的反码和原码相同,负数的反码,符号位不变,其他位取反

​ 反码: 0000 0111

​ 反码: 1111 1000

补码: 正数的补码和原码相同, 负数的补码, 在反码的基础上,末位加1

​ 补码: 0000 0111

​ 补码: 1111 1001

4.变量

  • 值可以随着需求的改变而在某个范围内随意改变

  • 主要作用: 存储

  • 变量名定义遵循小驼峰命名法

变量的定义格式:

数据类型 变量名 = 初始值;

初始化值:可以是常量 ,也可以是变量。一般情况下定义的时候,我们会在初始化值的位置上给常量。

变量的声明方式:

​ 数据类型 变量名;
​ 变量名 = 初始化值;

变量的注意事项:

  • 变量所在的大括号叫做变量的作用域,同一个作用域中,不能有多个名字相同的变量
int score = 0;
int score = 100;//错误: 已在方法 main(String[])中定义了变量 score
  • 定义在方法中的变量叫做局部变量,局部变量不赋初始值不能使用
int age;// 声明了一个int类型的age的变量
System.out.println(age);// 错误: 可能尚未初始化变量age
  • 定义在类中方法外的变量叫做成员变量,成员变量可以没有初始化值 ,因为系统会默认给定一个初始化值
public class Demo{
    int static grade;//静态只能调用静态   不能调用非静态
}
  • 同一行可以定义多个变量(但是不建议这么使用,可读性查)
 int a,b,c=10;//  int a;int b; int c = 10;
   System.out.println(a);//错误: 可能尚未初始化变量a

5.数据类型

分类:

  • 基本数据类型

整数类: byte short int long

浮点(小数)类: float double

布尔类: boolean

字符类: char

  • 引用数据类型

除了基本数据类型以外的所有类型:类 String 接口 数组

范围:

类型 字节 位数 默认值 范围
byte 1 8 0 -128-127
short 2 16 0 -32768~32767
int 4 32 0 -2147483648~2147483647
long 8 64 0 -9223372036854775808~9223372036854775807
float 4 32 0.0 -3.4E38~3.4028235E38
double 8 64 0.0 -1.79E-308~1.7976931348623157E308
boolean false true或false
char 1 8 \u0000 0~65535

各大类型变量的定义:

public class Demo3 {
//定义静态变量
	static byte b;
	static short s;
	static int i;
	static long l;
	static float f;
	static double d;
	static boolean bool;
	static String ss;          //在同一个作用域里面,不能出现相同名字的变量,否则会报错
	public static void main(String[] args) {
		System.out.println(b);
		System.out.println(s);
		System.out.println(i);
		System.out.println(l);
		System.out.println(f);
		System.out.println(d);
		System.out.println(bool);
		System.out.println(ss);
/*
      整数类型的默认值都是0
      小数类型的默认值都是0.0
      布尔类型的默认值是false
    String类型对应的默认值是null
 */
	}

}

注意事项:

  • 整数的默认类型是int, 小数的默认类型是double

  • 定义byte,short类型的变量,如果=右面的值在等号左边的类型范围之内,则可以直接赋值

  • 定义float类型的小数一定要在小数的后面加上一个f

  • 定义long类型的变量的时候,如果=右边的值在int的范围之内,则可以直接赋值,如果超出了int的范围,需要在整数的后面加上一个L (推荐使用L)

  • 基本数据类型的默认值:

  • 每一种基本数据类型都有默认值

  • 只有定义在方法外的变量才有默认值,定义在方法中的是没有的

  • 静态方法只能调用静态变量

整数类型的默认值都是0
浮点类型的默认值都是0.0
布尔类型的默认值是false
String类型对应的默认值是null

Java语言中,默认情况下所有的整数都是int类型,所有的小数都是double类型

运算规则:

byte,short的赋值
  • byte,short,char不能直接运算的,需要先转换成int类型
  • 给byte,short 类型的变量赋值的时候,要看等号右面是否有变量

​ 如果都是常量 : 看最终运算出来的结果是否在等号左边的范围之内,如果在则可以直接赋值

​ 如果有变量: 则按照运算的规则(byte,short,char不能直接运算的,需要先转换成int类型),如果的到的结果的范围大于等号左边类型的范围,则不能赋值

public class Demo5 {

	public static void main(String[] args) {
		byte b=10;
		byte c=20;
		byte num1=10+20;
		byte num2=(byte)(b+c);           //int num1=b+c;
		/*
		 当byte,short和char类型参与变量运算的时候,他们会先提升为int类型,然后再去参与运算
		 而当其参与常量运算时,则不需要
		 */
		System.out.println(num1);
		System.out.println(num2);

	}

}
float的赋值
  • byte,short,char—int—long—float—double

使用long类型给float赋值

​ long类型范围 2^63 -1

​ float类型范围3.4 x10^38

float f = 123L;//正确的

加法运算:

  • +号作为正号出现

  • +号作为加法运算符使用

  • +号作为字符串连接符使用

  • 从左往右依次运算,有括号的先算括号里的

  • String 和任意类型做加法得到的都是字符串,做拼接操作

  • 布尔类型不能和其他基本数据类型做运算

强制类型转换:

  • 基本数据类型,除了布尔,其他七种类型之间都可以进行强转, 一般把大类型转成小类型
强制类型转换的格式:

​ 目标类型 变量名 = (目标类型) 要转换的值;

byte by=(byte)130;
System.out.println(by);//-126

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Baldteen_/article/details/106893369