Java第一天
注释
代码的注释是程序代码可维护性的重要环节之一,所以我们要注意代码注释的规范。
原则
在整个程序当中,我们的注释要有统一的结构和标点来构造注释。注释的内容要准确简洁,错误的注释会起到反作用。
注释格式
单行注释
它是使用双斜线(//)标注的,注释的内容放在“//”的后面。
【语法】
//我是注释
多行注释
多行注释的作用是注释连续的多行内容。它把注释的内容放在“/”开始,“/”结束的区域内。
【语法】
/*
这是多行注释1
这是多行注释2
*/
文档注释
文档注释以“/**”开始,“*/”结束,中间的内容全部都是文档注释。
【语法】
/**
文档注释
*/
Javadoc注释
@author 对类的说明 标明开发该类模块的作者
@version 对类的说明 标明该类模块的版本
@see 对类、属性、方法的说明 参考转向,也就是相关主题
@param 对方法的说明 对方法中某参数的说明
@return 对方法的说明 对方法返回值的说明
@exception 对方法的说明 对方法可能抛出的异常进行说明
关键字
这一部分其实没什么好多说的,关键字随着学习的深入会慢慢掌握大部分的关键字,这里就大致的描述一下。
什么是关键词
在所有程序中有特殊意义的文字标记,不可以把它当做标识符来使用。
大致含义
标识符
什么是标识符?
凡是可以由自己命名的地方都称为标识符。
例如,对于常量、变量、函数、语句块、类、项目等都需要一个名字,这些我们都统统称为标识符。
标识符要求
- 标识符可以由字母、数字、下划线(_)和美元符号($)组成
- 标识符不能以数字开头,不能是java中的关键字。
标识符规范(驼峰命名法)
- 包名所有字母必须小写。例如:cn.itcast.test
- 类名和接口名每个单词的首字母都要大写。例如:ArrayList
- 常量名所有的字母都大写,单词之间用下划线连接。例如:DAY_OF_MONTH
- 变量名和方法名的第一个单词首字母小写,从第二个单词开始,每个单词首字母大写。例如:lineName、getLingNumber
- 在程序中,应该尽量使用有意义的英文单词来定义标识符,使得程序便于阅读。例如:使用userName表示用户名,password表示密码。
ngNumber
5. 在程序中,应该尽量使用有意义的英文单词来定义标识符,使得程序便于阅读。例如:使用userName表示用户名,password表示密码。
数据类型
浮点数拓展
最好避免使用浮点数进行比较,浮点数他是离散的,接近但不等于。
在进行比较的时候可以使用大数类
-
BIgInteger 实现任意整精度的整数
-
BigDecimal 实现任意精度的浮点数
大数
BigInteger
使用静态的valueof方法可以将普通的数值转换为大数:
BigInteger a=BigInteger.valueof(10086);
对于更大的数,可以使用一个带字符串参数的构造器:
BigInteger reallyBig=new
BigInteger("23234235436546437652435234235632")
遗憾的是我们不能使用熟悉的运算符号处理大数,而是需要使用大数类中的(加减乘除)add subtract multiply divide 方法。
public class BigIntegerDemo1 {
public static void main(String[] args) {
BigInteger bi1 = new BigInteger("123456789") ;
BigInteger bi2 = new BigInteger("987654321") ;
System.out.println("加法操作:" + bi2.add(bi1)) ; // 加法操作
System.out.println("减法操作:" + bi2.subtract(bi1)) ; // 减法操作
System.out.println("乘法操作:" + bi2.multiply(bi1)) ; // 乘法操作
System.out.println("除法操作:" + bi2.divide(bi1)) ; // 除法操作
System.out.println("最大数:" + bi2.max(bi1)) ; // 求出最大数
System.out.println("最小数:" + bi2.min(bi1)) ; // 求出最小数
BigInteger result[] = bi2.divideAndRemainder(bi1) ; // 求出余数的除法操作
System.out.println("商是:" + result[0] +
";余数是:" + result[1]) ;
System.out.println(bi1.compareTo(bi2)) ;// 比较操作,相等时输出0,否则为1
}
}
BIgDecimal
使用此类可以完成大的小数操作,而且也可以使用此类进行精确的四舍五入
加减乘除的方法都是一样的,唯一有个区别就是
BigDecimal divide(BigDecimal other ,RoundingMode mode);
//如果商是个无限循环小数,第一个divide方法会抛出一个异常。要得到一个四舍五入的结果,就要使用这个方法。RoundingMOde.HALF_UP是四舍五入的一个方法。
java.math.RoundingMode:这是一种枚举类型,它定义了8种数据的舍入模式。更多详细的舍入方式可以参考这篇博客: https://blog.csdn.net/bailu666666/article/details/79829902
类型转换
-
由于Java是强类型语言,所以要进行有些运算的时候的,需要用到类型转换。
-
运算时不同类型的数据要转换为同一类型的,然后进行运算
-
强制转换 高–低
int i=128; byte b=byte(i);//强制转换 这里会内存溢出,byte最大的是127 现在b变成了-128
-
自动转换 低–高
/*
注意点:
1. 不能对布尔值进行转换
2. 不能把对象类型转换为不相干的类型
3. 在把高容量转换到低容量的时候,强制转换
4. 转换的时候可能存在内存溢出,或者精度问题!
*/
- 其他注意点
当byte,short,char 发生运算时,会自动转换成 int 类型
public class Demo06 {
public static void main(String[] args) {
// 操作比较大的数的时候,注意溢出问题
// JDK7新特性,数字之间可以用下划线分割
int money = 10_0000_0000;
int years = 20;
int total = money*years; // -1474836480,计算的时候溢出了
long total2 = money*years; // 默认是int,转换之前已经存在问题了?
long total3 = money*((long)years);// 先把一个数转换为long
System.out.println(total3);
}
}
变量与常量
变量
在java中,变量声明尽可能靠近变量第一次使用的地方,一行声明一个变量,保持良好的编程风格。
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
- 变量名必须是合法的标识符。
public class Demo01 {
// 属性:变量
// 类变量 static 从属于类,一起出现,一起消失
static double salary = 2500;
// 实例变量: 从属于对象;如果不自行初始化,这个类型的默认类型 0 0.0
// 布尔值:默认是false
//除了基本类型,其余的默认值都是null
String name="热爱10005度的你";
int age=0;
// 作用域非常高
static{
}
public static void main(String[] args) {
// 局部变量:必须声明和初始化值
int i = 10;
System.out.println(i);
// 变量类型 变量名字 = new Demo08();
Demo08 demo08 = new Demo08();
System.out.println(demo08.name);
System.out.println(demo08.name);
System.out.println(salary);
//类变量可以直接输出
}
}
常量
final 常量名 = 值;
final double PI = 3.14;
//常量名一般使用大写字符。
变量与常量命名时要遵守驼峰命名规则;
作用域
类变量
- 在本类中可以直接使用,在其他类中可直接通过类名调用(ClassName.VariableName)
- 类变量通常是一个常量,为了方便调用,一般在类变量前面添加public和final关键字,声明为公开的常量
- 类变量在第一次被访问时创建,在程序结束时销毁
实例变量
- 实例变量在对象创建的时候创建,在对象被销毁的时候销毁
- 实例变量可以通过变量名访问(就是new出来的对象的变量名)
- 一般实例变量都会构建为private私有的,然后类中提供对应的getter和setter方法来进行访问和赋值
局部变量
- 仅在声明它的方法或者代码块中有效
- 当包含局部变量的方法或者代码块执行时,变量创建,结束时销毁
- 局部变量没有默认值,所以局部变量在被声明后,必须初始化才能使用