变量的定义和使用
package tech.aistar.day02;
import java.util.Date;
public class VarInitDemo {
public static void main(String[] args) {
byte b = 127;
short s = 100;//使用频率很少
//开发中常用的整数型类型 - int,long
//int类型可以初始化的值有哪些
int a = 100;
//存储一个二进制,只要0b二进制,1010对应的十进制
//java中的int类型表示的是十进制的数据
//1010 = 1*2^3+1+2^1 = 10
int a1 = 0b1010;
System.out.println(a1);
//java中使用单引号来表示一个字符
//'a'->char类型->int类型
//'a'对应的ascii码97
//'A'对应的ascii码是65
//'0'对应的ascii码是48
int a2 = 'a';
System.out.println(a2);
//java中以0开头的代表是八进制
//八进制转换十进制032 = 3*8^1 + 2*8^0 = 26
int a3 = 032;
System.out.println(a3);//26
//长整型 - long
//int类型->long类型
long x1 = 100;
//推荐定义long的方式采用隐式转换
long x2 = 200L;
//jdk7.x提供的 - 为了增强数字的可读性而已.
long x3 = 3_14_15_926L;
System.out.println(x3);
// Date date = new Date(3L*24*60*60*100*1000*1000*2000);
// System.out.println(date);
//浮点数 - 并不是用来进行精确计算的
//后面java.math.Decimal类解决小数计算的时候精度丢失的问题.
double d = 1.75;
//推荐定义double
double d2 = 5.67D;
//float的精度是7或者8
//double的精度是16
//double类型强制转换成float类型
float f = (float) 3.14;
//隐式转换
float f2 = 3.14F;
System.out.println(f2);
//补充
//数字进行计算的时候,都会转换成二进制进行计算
//小数进行计算的时候,还是不可逆的
//0.8999999999999999
System.out.println(2.0-1.1);
//0.9
System.out.println(2.0f - 1.1f);
//int->float ×
//int->double √
int n = 123456789;
float ft = n;
System.out.println(ft);//1.23456792E8
double db = n;
System.out.println(db);//1.23456789E8
float f3 = 1.234567565f;
System.out.println(f3);//1.2345675
//定义布尔类型
boolean flag = true;
System.out.println(flag);
//最特殊的是char类型
char c = 65;
System.out.println(c);
}
}
char类型
java中是使用单引号表示char类型,使用双引号来表示字符串.
java的底层的编码是unicode编码,char类型也是采用unicode编码
unicode编码是双字节[16bit],所以存储一个汉字.
ascii码和unicode码的关系?
不同的国家,符号表示的方式不同,所以ascii码[0
127]不够用.所以unicode[065535]码诞生了,几乎包含了所有国家的符号,unicode码包含ascii码.char类型在进行计算的时候会转换成ascii码来进行计算.
代码
package tech.aistar.day02;
public class CharDemo {
public static void main(String[] args) {
//java中是使用单引号表示char类型
//char的空间大小也是确定的
char c = 'a';
System.out.println(c);
//十六进制
//由数字0-9或者字母a-f/A-F,字母a代表就是数字10
//cmd - 输入native2ascii -> 输入中文
char c2 = '\u34af';
System.out.println(c2);
//char底层采用的是unicode编码,所以存储一个汉字
char c3 = '星';
System.out.println(c3);
char c4 = 48;
System.out.println(c4);
int m = 48;
char c5 = (char) m;
System.out.println(c5);
//char类型在进行计算的时候会转换成ascii码来进行计算.
//'a' = 97,'A' = 65,'0' = 48
//char类型的计算 - 进阶部分
char n1 = 'a' + 1;//ok
System.out.println(n1);// 'b'
char cc = 'a';
char nn = (char) (cc + 1);
System.out.println(cc);
//char->int
int result = 'a' + 'b';//ok
System.out.println(result);//195
}
}
变量的赋值方式
单个赋值 int a = 10;
通过表达式赋值
int a = 10; int b = 20; //表达式:由字面量或者变量以及运算符号组成的合法的语句 int result = a + b;
链式赋值
int a=10,b=20,c=30;//同时声明了三个变量,并且都进行初始化 int a,b,c = 100;//此处仅仅是对c进行赋值操作,如果一个局部变量没有进行赋值,那么将不能够使用
可以先定义变量,然后再进行赋值
int a; a = 10; a = 20; System.out.println(a);
通过方法进行赋值 - 暂时了解
int result = getResult(); /** * 自定义了一个方法 - 千万不要将它放在main方法中 * java语法 - 方法体内部是不能够再去定义方法的 * @return 整数 */ public static int getResult(){ return 100; }
变量的分类
局部变量 - 定义在方法体内部
使用的范围就是在它所在的最近的那个{}中
全局变量 - 定义在方法体外部的变量
生命周期 - 面向对象
常量
使用final修饰的变量 - 常量 - 不可改变的量
语法
final 数据类型 变量 [= 初始值];
package tech.aistar.day02; /** * 本类用来演示: 局部变量和全局变量 * * @author: success * @date: 2021/7/16 10:04 上午 */ public class LocalVarAndGlobalDemo { //定义全部变量 static int c = 100;//静态变量 - 暂不了解 public static void main(String[] args) { //代码块 //局部变量 - 定义在方法体内部 int a= 10; { // 使用的范围就是在它所在的最近的那个{}中 int b = 20; System.out.println(a);//ok System.out.println(b);//ok } //使用的范围就是在它所在的最近的那个{}中 //System.out.println(b);//error //访问全局变量 System.out.println(c); //定义一个常量 - 不可改变的量 final int s = 100; //s = 200; //final - b肯定不可变 final byte b = 100; byte result = b + 1;//ok } }