- java基础03 数据类型
- 1、强弱类型语言
- 强类型语言
- 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
- 弱类型语言
- 弱类型语言也称为弱类型定义语言。与强类型定义相反。像vb,php等就属于弱类型语言
- 强类型语言
- 2、数据类型
- 基本类型(primitive type)
- 数值类型
- 整数类型
- byte占1个字节范围
- 1byte(字节)=8bit(位)
- short占2个字节范围
- int占4个字节范围
- long占8个字节范围
- byte占1个字节范围
- 浮点类型
- float占4个字节
- double占8个字节
- 字符类型
- char占2个字节
- 整数类型
- boolean类型
- 占1位其值只有true和false两种
- 数值类型
- 引用类型 (reference type)
- 类
- 接口
- 数组
- 注:字符串类型是一个类,也属于引用数据类型
- 基本类型(primitive type)
- 1、强弱类型语言
- java基础04 数据类型拓展及面试
- 3、整型拓展
- 十进制
- 十进制整数,如: 99, 500, 0。
- 八进制
- 要求以 0 开头,如:015
- 十六进制
- 要求 0x 或 0X 开头,如:0x15 。
- 十进制
- 4、浮点型拓展
- 金融面试问:银行金融业务用什么类型表示?
- 浮点类型float, double的数据不适合在不容许舍入误差的金融计算领域。 如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。
- 主要理由
- 由于字长有限,浮点数能够精确表示的数是有限的,因而也是离散的。浮点数一般都存在舍入误差,很 多数字无法精确表示,其结果只能是接近,但不等于;二进制浮点数不能精确的表示0.1,0.01,0.001这样 10的负次幂。并不是所有的小数都能可以精确的用二进制浮点数表示。
- 大数值
- Java.math下面的两个有用的类:BigInteger和BigDecimal,这两个类可以处理任意长度的数 值。BigInteger实现了任意精度的整数运算。BigDecimal实现了任意精度的浮点运算。
- 浮点数使用总结
- 1. 默认是double
- 2. 浮点数存在舍入误差,很多数字不能精确表示。如果需要进行不产生舍入误差的精确数字计算,需 要使用BigDecimal类。
- 3. 避免比较中使用浮点数
- 金融面试问:银行金融业务用什么类型表示?
- 5、字符型拓展
- 单引号用来表示字符常量。
- char 类型用来表示在Unicode编码表中的字符。
- Unicode编码被设计用来处理各种语言的所有文字,它占2个字节,可允许有65536个字符。
- 6、布尔型拓展
- boolean类型(一位,不是一个字节),就是0|1
- boolean类型有两个值,true和false,不可以 0 或非 0 的整数替代 true 和 false ,这点和C语言不同。
- boolean 类型用来判断逻辑条件,一般用于程序流程控制。
- 3、整型拓展
- Java基础05 类型转换
- Java是强类型语言,所以要进行有些运算的时候的,需要用到类型转换。
- 运算中,不同类型的数据先转化为同一类型,然后进行运算。
- 转换从低级到高级(根据容量来看)。
- byte,short,char—> int —> long—> float —> double
- 小数优先级大于整数
- 1、自动类型转换 (低到高,同等级)
- 容量小的数据类型可以自动转换为容量大的数据类型。
- eg: short数据类型的位数为16位,就可以自动转换位数为32的int类型,同样float数据类型的位数为32,可以自动转换为64位的double类型。
- 容量小的数据类型可以自动转换为容量大的数据类型。
- 2、强制类型转换(高到低,容易溢出)
- 强制类型转换,又被称为造型,用于显式的转换一个数值的类型.
- 在有可能丢失信息的情况下进行的转换是通过造型来完成的,但可能造成精度降低或溢出。
- 强制类型转换的语法格式:
- (type)var ,运算符“()”中的type表示将值var想要转换成的目标数据类型。 条件是转换的数据类型必须是兼容的。
- 当将一种类型强制转换成另一种类型,而又超出了目标类型的表示范围,就会被截断成为一个完全不同的值,溢出。
- 强制类型转换,又被称为造型,用于显式的转换一个数值的类型.
- 3、常见错误和问题
- 1. 操作比较大的数时,要留意是否溢出,尤其是整数操作时
- 2. L和l 的问题:
- 不要命名名字为l的变量
- long类型使用大写L不要用小写。
- 数据类型转换必须满足如下规则:
- 不能对boolean类型进行类型转换。
- 不能把对象类型转换成不相关类的对象。
- 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
- 转换过程中可能导致内存溢出或损失精度
- 4、JDK7扩展
- JDK7新特性: 二进制整数
- 由于我们在开发中也经常使用二进制整数,因此JDK7为我们直接提供了二进制整数的类型。
- 我们只要以:0b开头即可。
- JDK7新特性:下划线分隔符
- 在实际开发和学习中,如果遇到特别长的数字,读懂它令人头疼!JDK7为我们提供了下划线分隔符,可以按照自己的习惯进行分割。
- eg:int b = 1_2234_5678
- JDK7新特性: 二进制整数
- Java是强类型语言,所以要进行有些运算的时候的,需要用到类型转换。
- java基础06 变量、常量、作用域
- 1、变量(variable)
- 变量是什么?
- 我们通过变量来操纵存储空间中的数据,变量就是指代这个存储空间!空间位置是确定的,但是里面放置什么值不确定!
- 给变量取名字放到内存里
- 变量三要素
- 变量名,变量类型
- 变量在使用前必须对其声明, 只有在变量声明以后,才能为其分配相应长度的存储单元,声明格式为:
- //数据类型 变量名 = 值;可以使用逗号隔开来声明多个同类型变量。
- 注意事项:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
- 变量名必须是合法的标识符
- 变量声明是一条完整的语句,因此每一个声明都必须以英文分号结束
- 变量在使用前必须对其声明, 只有在变量声明以后,才能为其分配相应长度的存储单元,声明格式为:
- 变量作用域
- 类变量(静态变量: static variable):独立于方法之外的变量,用 static 修饰。
- 静态变量
- 使用static定义。
- 从属于类,生命周期伴随类始终,从类加载到卸载。
- 如果不自行初始化,他会自动初始化成该类型的默认初始值(数值型变量初始化成0或0.0,字符型变量的初始化值是16位的0,布尔型默认是false)
- 静态变量
- 实例变量(成员变量:member variable):独立于方法之外的变量,不过没有 static 修饰。
- 实例变量
- 方法外部、类的内部定义的变量。
- 从属于对象,生命周期伴随对象始终。
- 如果不自行初始化,他会自动初始化成该类型的默认初始值
- (数值型变量初始化成0或0.0,字符型变量的初始化值是16位的0,布尔型默认是false)
- 实例变量
- 局部变量(lacal variable):类的方法中的变量。
- 局部变量
- 方法或语句块内部定义的变量。生命周期是从声明位置开始到”}”为止。
- 在使用前必须先声明和初始化(赋初值)。
- 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。
- 局部变量
- 类变量(静态变量: static variable):独立于方法之外的变量,用 static 修饰。
- 变量名,变量类型
- 变量的命名规范
- 1. 所有变量、方法、类名:见名知意
- 2. 类成员变量:首字母小写和驼峰原则 : monthSalary 除了第一个单词外,后面首字母大写
- 3. 局部变量:首字母小写和驼峰原则
- 4. 常量:大写字母和下划线:MAX_VALUE
- 5. 类名:首字母大写和驼峰原则: Man, GoodMan
- 6. 方法名:首字母小写和驼峰原则: run(), runRun()
- 变量是什么?
- 2、常量 (Constant)
- 初始化(initialize)后不能再改变值!不会变动的值。
- 常量名一般使用大写字符。
- 程序中使用常量可以提高代码的可维护性。例如,在项目开发时,我们需要指定用户的性别,此时可以定义一个常量 SEX,赋值为 "男",在需要指定用户性别的地方直接调用此常量即可,避免了由于用户的不规范赋值导致程序出错的情况。
- 1、变量(variable)
- java基础07~10运算符
- 运算符operator
- 算术运算符: +,-,*,/,%,++,--
- 赋值运算符 =
- 关系运算符: >,<,>=,<=,==,!= instanceof
- 逻辑运算符: &&,||,!
- 位运算符: &,|,^,~ , >>,<<,>>> (了解!!!)
- 条件运算符 ?:
- 扩展赋值运算符:+=,-=,*=,/=
- 1、二元运算符
- 整数运算
- 如果两个操作数有一个为Long, 则结果也为long
- 没有long时,结果为int。即使操作数全为shot,byte,结果也是int.
- 浮点运算
- 如果两个操作数有一个为double, 则结果为double.
- 只有两个操作数都是float, 则结果才为flfloat.
- 关系运算符
- 返回布尔值!
- 整数运算
- 运算符operator
-
- 2、取模运算
- 就是我们小学的取余
- 其操作数可以为浮点数,一般使用整数。如:5.9%3.9=2.000000004
- 要点
- 负数%负数=负数;
- 负数%正数=负数;
- 正数%负数=正数;
- 注:一般都是正整数运算,进行结果的判断!
- 3、一元运算符
- 自增(++)自减(--)运算符是一种特殊的算术运算符,在算术运算符中需要两个操作数来进行运算,而自增自减运算符是一个操作数,分为前缀和后缀两种。
- 注意:java中的乘幂处理
- Math类提供了很多科学和工程计算需要的方法和常数。特殊的运算都需要运用到方法!
- 4、逻辑运算符
- 逻辑与:&&和&,逻辑或:||和|,逻辑非:!。
- 逻辑与:&&和&,逻辑或:||和|,逻辑非:!。
- 2、取模运算
-
-
- 逻辑与和逻辑或采用短路的方式。从左到右计算,如果确定值则不会再计算下去。在两个操作数都为true时,结果才为true,但是当得到第一个操作为false时,其结果就必定是false,这时候就不会再判断第二个操作了。
- 逻辑与只要有一个为false, 则直接返回false.
- 逻辑或只要有一个为true, 则直接返回true;
- 5、位运算符
- Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。位运算符作用在所有的位上,并且按位运算。
-
-
- 6、扩展运算符
- 6、扩展运算符
-
- 7、字符串连接符
- “+” 运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接。
- 8、三目条件运算符
- 9、运算符优先级
- 7、字符串连接符
- java基础11 包机制
- 1、问题发现
- 2、包的作用
- 1、把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。
- 2、如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。
- 3、包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。
- Java 使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位类(class)、接口、枚举(enumerations)和注释(annotation)等。
- 3、创建包
- 创建包的时候,你需要为这个包取一个合适的名字。之后,如果其他的一个源文件包含了这个包提供的类、接口、枚举或者注释类型的时候,都必须将这个包的声明放在这个源文件的开头。
- 包声明应该在源文件的第一行,每个源文件只能有一个包声明,这个文件中的每个类型都应用于它。
- 如果一个源文件中没有使用包声明,那么其中的类,函数,枚举,注释等将被放在一个无名的包(unnamed package)中。
- 4、import 关键字
- java基础 12 javaDoc
- 1、简介
- 2、命令行生成Doc