day02Java语言基础数量部分
今天学习了:
1. Java中数量相关的知识,包括,关键字,标识符,常量,变量等等相关知识,
2. 常量中主要学习了进制,以及有符号数表示
3.变量主要涉及变量定义以及,变量值的类型转换。
1.关键字
关键字 :被Java语言赋予特殊含义的单词
关键字的特点 :组成关键字的字母全部小写
关键字的注意事项 :高级的编辑器或者专门的开发工具中,关键字会有高亮效果
goto和const作为保留字存在,目前并不使用
2.标识符
标识符(我们自己起的一个名字)
就是给类,接口,方法,变量等起名字时使用的字符序列
组成规则:
英文大小写字母
数字字符
$和_
注意事项:
不能以数字开头
不能是Java中的关键字(保留字)
区分大小写
常见命名规则:驼峰命名
包命名:就类似于在操作系统中,以文件夹的形式组织文件,在java语言中,以包来组织java中的类
关于包来说,为了防止类的命名冲突,一个包下不可以定义同名的类,但是不同包可以定义同名的类
如果,不同的coder,定义了相同的类名此时,只要保证同名的类在不同的包下就可以
也就是说,解决类的同名问题依靠的是包名的不同
为了保证包名的唯一,以域名(唯一的)反转的形式来命名包
baidu.com
com.cskaoyan.name
com.zs.name
单级 test 一个全部小写的单词
多级包 com.cskaoyan.name 以域名反转的方式来命名,单词全部小写,单词之间以.分隔
类和接口命名
单个: 首字母大写,其余字母全部小写 Student
多个单词: 每个单词首字母大写,其余字母全部小写 JavaBasic MaxAge
变量和方法的命名:
单个: 所有字母小写 value
多个单词:第一个单词首字母小写,从第二个单词开始,每个单词首字母大写 intValue
常量的命名:所有字母全部大写
单个: 单词的所有字母全部大写即可 MAX IP NONE
多个单词: 每个单词全部大写,单词之间以_来分隔: MAX_AGE MAX_VALUE IP_ADDRESS
在实际开发当中,命名要遵循的一个核心原则:见名知意
public class Demo2Identifier { public static void main(String[] args) { //标识符可以包含英文大小写字母,数字字符,$和_ int intValue123$_; //注意事项 //1.标识符不能以数字开头 //int 1intValue; //2.不能是Java中的关键字(保留字) //int class; //3. java语言中严格区分大小写 int Class; } }
3.注释
注释:用于解释说明的文字
java注释的分类:
1. 单行注释 //
2. 多行注释 (不能嵌套使用) /*注释内容*/
3. 文档注释(仅从注释的角度来说他们没有任何区别,但是文档注释有一个特殊的效果) /**注释内容*/
千万不要忽视注释的作用!!
1.写代码
2.项目维护,阅读代码
//我通过class关键字定义了一个类,它的名字叫Demo1Note public class Demo1Note { public static void main(String[] args) { //千万不要忽视注释的作用,尤其是对于初学者,最好先写注释,在写代码 //第一 //开始写代码 //第二 //第三 //if( ) { // //该分支对一个。。。情况 // //} else if() { // //该分支。。。。 // //} else if() { // //} } }
4.常量、进制、进制转化、有符号表示
常量:在运行过程中,其值不会发生改变的量
常量的分类:
1.字面值常量
2.自定义常量(面向对象部分讲)
字面值常量:
字符串常量 :双引号引起来的内容 "Hello" 代表固定的字符序列 Hello
整形常量:所有整数 1 , 2
小数常量:所有小数 0.1 ,3.2
字符常量:用单引号引起来的内容 'a', '我'
布尔常量: 只有 true or false
空常量: null (面向对象)
/** Java语言中表示不同进制的语法 二进制:由0,1组成,以0b开头,比如0b1100 八进制:由0~7组成,以0开头, 比如014 十进制:由0~9组成,默认10进制,比如12 十六进制:由0~9,A~F(或a~f)表示0~15,以0x开头 */ public class Demo2Int { public static void main(String[] args) { //12对应的2进制表示 以0b开头 System.out.println(0b1100); //八进制的表示 以0开头 System.out.println(011); //10进制的输出 System.out.println(11); //16进制 以0x开头 System.out.println(0x11); System.out.println(0x1f); System.out.println(0x1F); System.out.println(-12); } }
10进制和2进制的相互转化:
之前我们讨论了Java语言中不同进制的表示方法,其实,计算机中的数据也是这样来表示的。 那么,随之而来有一个问题,上面的进制表示,好像默认表示的是正整数,那负数在计算机中如何表示呢?
原码
在进制表示法的基础上,在最高位增加一 位,表示正负
反码
原码和反码的中间状态的数值编码表示
补码
所有整数在计算机中其实都是以补码形式存在
5.变量
变量
在程序运行期间,其值可以改变的量,在某个范围内可以改变的量
理解(通过名字访问到)变量就是“一片”内存空间
变量定义的格式
数据类型 变量名 = 变量值
6.数据类型
数据类型
一种数据类型,其实表示的就是一个数据集和基于该数据集的一组合法操作
整数默认:int 小数默认:double
对于boolean类型的变量
数据类型的转化(jvm默认类型转化规则):
1. boolean类型的值不能直接转化为其它数据类型的值
2. byte,short,char—>int—>long—>float—>double
3. byte,short,char相互之间不转换,他们参与运算首先转换为int类型
强制转化
目标类型 变量名=(目标类型)(被转换的数据)
public class Demo1Variable { public static void main(String[] args) { //数据类型 变量名(标识符) = 常量值 1 byte byteValue = 10; //改变变量的值 //byteValue = 120; int intValue = 20; //定义一个boolean类型的变量 boolean b = true; // false //合法的值的表示范围是 [-128 - 127] //byteValue = 200; // 不同类型变量之间的运算和赋值 // 对于变量而言编译器,它不可能知道变量当前的值多少,禁止把大类型的值赋值给小类型 //byteValue = intValue + byteValue; //这里有一个问题: 不同类型的变量之间可以做运算 // 对于jvm来说,它要求参与运算的数量之间,他们必须是同一种类型 // 比如说: int + byte,jvm首先会将byte变量读取出来,变成一个int类型的值,然后是两个int类型的值做运算 intValue = intValue + byteValue; //类型之间默认的转化规则 小类型 -》大类型 long l = 100000; l = intValue + l; //练习 l = byteValue + intValue + l; // int a = 10; byte bValue = 20; //假设你确定,a + bValue的值在byte类型的表示范围之内 //强制类型转化 目标类型 变量名=(目标类型)(被转换的数据); byte c =(byte)(a + bValue); System.out.println(c); c = (byte) 129; //129int类型的整数值 ——> byte c // 129 补码 0,10000001 // c 1,0000001 -> 1,1111110 // + 1 // 1,1111111 原码表示 -> 十进制的值 64 + 32 + 16 + 8 + 4 + 2 + 1 -127 System.out.println(c); } }
public class Exercise { public static void main(String[] args) { // byte b1 = 1, b2 = 2, b; //byte,short,char相互之间不转换,他们参与运算首先转换为int类型 //b = b1 + b2; //两个byte类型的值参与运算,他们都会首先被转化成int //这是因为,编译器简单的判断了一下,不会超出byte类型变量的表示范围 b = 1 + 2; //b = 202 + 1; } }
使用变量的注意事项:
作用域
变量有效的时间范围,这个范围通常用{}来界定
初始化值
变量在使用之前,由编译器强制必须赋初值
建议一行定义一个变量
从代码的可读性角度来考虑
public class Scope { public static void main(String[] args) { int i = 10; { //这个{}就代表了一个作用域 System.out.println(i); } //在变量定义的作用域之外,就访问不到该变量了 System.out.println(i); //对于变量而言,一定要先赋值,再使用。 //默认0,只针对成员变量和数组中的值。局部变量没有默认初值,得自己赋初值。 //初始化,就是给变量赋予初值 int a; int b = 10, c, d = 10; a = 10; System.out.println(a); } }