JAVASE day02
JAVASE day02
一、
①编译阶段是检查代码的语法
②字节码文件与平台无关的
③我们要知道写代码一定要写注释的
注释分类:
//单行注释
作用域: 有效作用的范围从//开始的当前行
从//开始的当前行
嵌套: 可以嵌套单行,不可以嵌套文档和多行注释
位置: 行的上面或者行尾
/**/多行注释
作用域: 多行有效
嵌套: 可以嵌套单行,不可以嵌套文档和多行注释
位置: 类的上面|方法的上面
/***/文档注释
作用域: 多行有效
嵌套: //可以嵌套单行,不可以嵌套文档和多行注释
位置: 类的上面|方法的上面
多行和文档注释的区别:
1.文档注释,在使用工具的时候(idea…),在方法的上面会提供方法参数的注释
2.文档注释的内容,可以保留在对类生成的API文档中
API文档:是说明文档,需要在DOS窗口输入javadoc 文件名.java
注意: 所有的注释都不会被编译
注释不会存在于class文件中
二、
- 一个java文件中可以定义多个类,但是类名不能相同
- 被public修饰的类只能存在一个,并且要求与文件名保持一致
- java是以类为单位的
- 修改了源代码一定要重新编译
- javac编译的时候: javac 文件名.java 编译这个文件中所有的类,同时检查代码的语法,编译出多个class文件,class文件以类名为单位
- java命令解释执行: java 类名 java命令后面自动匹配class文件,所有可以省略名,因为class文件是以类为单位的
- 一个类中不能存现多个主方法,程序只能存在一个入口
三、
1、java中关键字和保留字
关键字:java关键字是java语言保留供内部使用的特殊单词,已经在使用 public公共的 class
关键字会变色
注意:关键字全部小写
保留字:是Java语言保留供内部使用的特殊单词,但是现在还没有被使用,所以叫做保留 goto const
2、java标识符
标识符:就是给类,接口,方法,变量等起名字的字符序列。一切起名字地方的这个名字就是标识符
标识符的命名规则(必须遵守,不然报错):
①只能由字母,数字,下划线_,美元符号$任意组合而成,但是数字不能开头
②严格区分大小写
③关键字与保留字不能作为标识符使用
标识符的命名规范(应该遵守,但是不遵守也不会报错)
①见名知意
②驼峰命名原则:
- 包(文件夹) : 全部小写 层级之间使用.连接 例如:shang.hai -> shang文件夹中存在一个hai文件夹
- 每个单词首字母大写 如:ShangHai
- 方法名|变量名 : 第一个单词全部小写,第二个单词首字母大写 如:shangHai
- 常量名 : 全部大写,每个单词之间使用_连接 如:SHANG_HAI
四、
变量
①变量:可变的量,存储单个数据,在java程序执行过程中,其值可以发生改变的量
我们可以这么形容,相当于造盒子,盒子就是变量 盒子的名字就是变量名 盒子中存储的数据就是变量值 例如:停车位 位置是变量 停车位的编号就是变量名 车就是数据。
一块内存空间,空间就是变量 空间中放的数据就是变量值 根据存储数据为空间起名字就是变量名,java中定义一个变量,就是在内存中开辟一块空间,用来存储指定类型的数据,空间的大小由数据决定
变量指的就是一个块空间,作用就是为了存储数据
②变量的数据有不同的数据类型
整数int double小数 字符类型char 字符串String"" boolean布尔
定义:
声明的同时赋值
数据类型 变量名 = 赋值;
先声明后赋值
数据类型 变量名; 声明
变量名 = 赋值; 赋值
public class 类名{
public static void main (String[] args){
int i;
i=10;
int j=15;
}
}
定义变量的注意事项:
- 变量的名字 : 标识符的命名规则|规范
- 变量的类型 : 根据要存储的变量值进行选择
- 变量的值 : 与变量的类型保持一致
注意: 变量可以赋值为一个数据值,可以赋值为一个表达式,但是都是最终得到一个结果数据然后才能赋值给变量一条语句结束必须添加;
③变量的作用域
作用域: 从变量的声明开始,到包含它的离它最近的}结束
{} -> 自成作用域
注意: 同一作用域范围内,变量名不能重复,变量的值一旦修改不可恢复
分类:
局部变量 : 在方法中或语句块中{} 定义的变量就为局部变量
1.使用之前必须已经声明并且已经赋值
2.在java中局部变量不存在默认值
成员变量 : 定义在类中方法外
存在默认值,整数:0 小数:0.0 字符:’ ’ 字符串:null 布尔: false
五、
数据类型
基本数据类型: 4类8种
计算机中基础存储单位就是字节 1byte = 8bit比特位
整型(整数)
byte 字节型 1个字节 8位 [-128,127]
short 短整型 2个字节 16位 [-32768,323767] 正负3万
int 整型 4个字节 32位 ±21亿
long 长整型 8个字节 64位 最大
注意:在java中整数的字面常量值默认是int类型需要在long类型数据的后面添加l或L(推荐),使用最多的整型为int类型
浮点型(小数)
float 单精度 能够表示小数点后7位左右 4个字节
double 双精度 能够表示小数点后15位左右 8个字节
浮点类型运算可能不精确
java中小数的字面常量值默认double类型
推荐使用double类型
表示float类型的小数在数据的后面添加f\F
字符型
char 字符型 2个字节
如何表示字符型的数据:通过’ '中包含一个字符,有且仅有一个字符
而字符可以用0~65535之间的整数表示,就是字符集 unicode赋予
②引用数据类型 3种
类 接口 数组[]
六、
数据类型转换(这是个难点)
自动类型提升
把小数据类型数据赋予大数据类型
强制类型转换
把大数据类型数据赋予小数据类型
小范围类型 变量名 = (小范围类型)大范围类型数据
注意:
①=是自右向左运算的符号
②如果运算时,存在多种类型的数据参与运算,最终的结果类型提升为参与运算中最大的类型,如果最大类型<int类型,结果自动提升成为int
③char类型参与运算,先转为十进制的整数,再运算
数据类型的大小:byte ->short -> char -> int ->long -> float ->double
//自动类型提升
byte b = 100;
short s = b;
//强制类型转换
int i = (int)100L;
System.out.println(i);//100
byte b2 = (byte)i;
System.out.println(b2);//100
//自动类型提升
long l = b+s+i;
System.out.println(l);//300
float f = (float)1.5;
//取整
int i2 = (int)f;
System.out.println(f);//1.5
System.out.println(i2);//1
double d = f+l;
System.out.println(d);//301.5
float f2 = l;
System.out.println(f2);//300.0
//先运算,再强转,最后再赋值,这里b+s结果为int型
short s3 = (short)(b+s);
//short与int类型运算,结果为int类型,然后再强转为short,再赋值
short s4 = (short)(s+1);
//char
char ch = 'a';
System.out.println(ch+1);//98
char ch2 = 'a'+1;//这里'a'+1运算得98,代表着b,把b赋值给ch2,输出ch2就会为b
System.out.println(ch2); //b,要注意这里是输出ch2没有运算,运算才会把'a'转为97
//强转
char ch3 = (char)(ch+1);//char型与1(整形int)运算结果为int
System.out.println(ch3); //b
//圆环型
byte by = (byte)128;
System.out.println(by); //byte为圆环形127与-128首位相连,127多1变成-128
七、
随机数
Math 数学类
java 提供的类,包含很多数学操作功能
Math.random() 生成随机数
[0.0,1.0) 随机小数 -> double
公式:
[min,max]随机整数 (int)(Math.random()(max-min+1)+min)
[min,max)随机整数 (int)(Math.random()(max-min)+min)
double d1 = Math.random();
System.out.println(d1);
System.out.println(Math.random());
System.out.println(Math.random());
System.out.println(Math.random());
System.out.println(Math.random());
System.out.println(Math.random());
//[1,26] min = 1 max=26
System.out.println((int)(Math.random()*(26-1+1)+1));
//[5,7],每一个输出语句都是一个随机值
System.out.println((int)(Math.random()*(7-5+1)+5));
System.out.println((int)(Math.random()*(7-5+1)+5));
System.out.println((int)(Math.random()*(7-5+1)+5));
System.out.println((int)(Math.random()*(7-5+1)+5));
System.out.println((int)(Math.random()*(7-5+1)+5));
//[3,50)-> min3 max50 (2,50)->min2+1 max50
System.out.println((long)(Math.random()*(50-3)+3));