备注:该笔记可参考 速学堂java学习html
1.注释方式:java
2.示例学习
/** * Welcome类(文档注释) * @author codeworker * @version 1.0 */ public class Welcome{ //单行注释 public static void main(String[] args/*行内注释*/){ System.out.println("Hello World!"); } /* 多行注释 多行注释 */ }
1.标识符:用来给变量、类、方法以及包进行命名的,如Welcome、name等
2.标识符命名规则:测试
3.标识符使用规范:code
4.示例htm
/** * 测试标识符的用法 * @author:codeworker */ public class TestIdentifer{ public static void main(String[] args){ int a123 = 1; //int 123a = 2; //数字不能开头 int $a = 3; int _abc = 4; //int #abc = 5; int 年龄 = 18; //可使用中文,可是不建议 //int class = 2; //关键字不能做为标识符 } }
Java关键字是Java语言保留供内部使用的,不能使用关键字做为变量名或方法名。不须要专门记忆,使用多了天然就记住了。
对象
1.变量的本质:表明一个“可操做的存储空间”
注:变量在使用前必须对其声明,只有声明后,才能为其分配存储空间
2.示例:生命周期
double salary; long earthPopulation;//long类型的分配空间为8个字节 int age; //int类型的分配空间为4个字节 int i,j; //可一行声明多个变量,可是不建议,其可读性较差 double e = 2.718282828;//可将变量的声明和初始化放在同一行中
3.变量分类ci
类型 | 声明位置 | 从属于 | 生命周期 | 注意事项 |
---|---|---|---|---|
局部变量 | 方法或语句块内部 | 方法或语句块 | 从声明位置开始,直到方法或语句块执行完毕,局部变量消失 | 在使用前必须先声明、初始化(赋初值)再使用 |
成员变量(实例变量) | 类内部,方法外部 | 对象 | 对象建立,成员变量也跟着建立,对象消失,成员变量也跟着消失 | 若是不自行初始化,会自动初始化为该数据类型的默认初始值 |
静态变量(类变量) | 类内部,static修饰 | 类 | 类被加载,静态变量就有效;类被卸载,静态变量消失 | 若是不自行初始化,与成员变量相同会自动赋初值 |
注:与成员变量和静态变量相关的知识,在后面会再次讲解文档
4.示例:
public class TestVariable{ int a; //成员变量,从属于对象,成员变量会自动被初始化 static int size; //静态变量,从属于类 public static void main(String[] args){ { int age; //局部变量,从属于语句块 age = 18; } int salary = 3000;//局部变量,从属于方法 int i; //int j = i + 5;//编译出错,变量i尚未初始化 } }
常量类型:
final double PI = 3.14159; //PI = 3.15; //编译出错,常量一旦被初始化,即不可改其值
建议:
全部变量、方法、类名:见名知意
类成员变量:首字母 小写 和驼峰原则,如monthSalary
局部变量:首字母 小写 和驼峰原则
常量:大写字母和下划线,如MAX_VALUE
类名:首字母 大写 和驼峰原则,如GoodMan
方法名:首字母 小写 和驼峰原则,如calSalary()
Java中定义了3类8种基本数据类型
注:
1.与C++区别,Java整型的范围与处理器无关,使其有很强的移植能力;
2.Java语言的整型常数默认为 int型,声明 long型常量能够后加 ’l‘或 ’L‘;
3.绝大部分应用程序采用double型浮点数,默认的浮点型常量也是double;
4.浮点类型数据不适合于不允许舍入偏差的金融计算领域,其多使用BingDecimal类;
5.对于没法直接写出的字符型,可采用转移字符,如 ‘\n';
雷区:不要使用浮点数进行比较,在须要进行比较的时候,请使用BigDecimal类
建议:当写判断语句:if(flag == true)时,建议写法为if(flag),可避免低级错误
示例一:长整数类型赋值
long a = 55555555; //编译成功,在int型表示的范围内(21亿内) //long b = 5555555555555;//不加L编译错误,超过int范围 long b = 5555555555555L;//编译成功
示例二:科学记数法赋值浮点数
double f = 314e2; //314*10^2 double f2 = 314e-2; //314*10^(-2)
示例三:浮点数比较存在的问题
float f = 0.1f; //声明赋值为float类型 double d = 1.0/10; System.out.println(f==d);//结果为false float d1 = 423432423f; float d2 = d1 + 1; System.out.println(d1==d2);//结果为true
示例四:BigDecimal进行浮点数比较
import java.math.BigDecimal; public class Main{ public static void main(String[] args){ BigDecimal bd = BigDecimal.valueOf(1.0); bd = bd.subtract(BigDecimal.valueOf(0.1)); bd = bd.subtract(BigDecimal.valueOf(0.1)); bd = bd.subtract(BigDecimal.valueOf(0.1)); bd = bd.subtract(BigDecimal.valueOf(0.1)); bd = bd.subtract(BigDecimal.valueOf(0.1)); System.out.println(bd);//0.5 System.out.println(1.0-0.1-0.1-0.1-0.1-0.1);//0.5000000000000001 } }
注:
=是赋值运算符,而真正的判断两个操做数是否相等的运算符是==
==、!=是全部(基本和引用)数据类型均可以使用
>、>=、<、<=仅针对数值类型(byte/short/int/long,float/double,char)
i++和++i不要太深究,大概理解意思便可
运算符优先级不需刻意记忆,不清楚时,使用小括号组织便可
可是,对于经常使用的逻辑运算符优先级,切记“逻辑非>逻辑与>逻辑或”
示例:三目条件运算符
int score = 80; int x = -100; String type = score<60?"不及格":"及格"; int flag = x>0?1:(x==0?0:-1); System.out.println("type="+type); System.out.println("flag="+flag);
short b1 = 12; //合法 short b2 = 1234567;//非法,1234567超出short的表数范围
double x = 3.14; int nx = (int)x; //值为3 char c = 'a'; int d = c+1; System.out.println(nx); System.out.println(d); System.out.println((char)d);
int money = 1000000000;//10亿 int years = 20; int total = money*year;//返回total为负数,超过了int范围 System.out.println("total="+total); long total2 = money*year; //返回的total2仍然为负数,由于是先int计算,后转为long,已经丢失数据 System.out.println("total2="+total2); long total3 = money*((long)years); //返回的total3正确,先将其中一个因子变为long,整个表达式发生提高,所有用long来计算 System.out.println("total3="+total3);
常见问题二:不要命名为l的变量,l容易和1混淆,long类型使用大写L不要用小写
int l = 2;//分不清是L仍是1 long a = 23451l;//建议使用大写L System.out.println(a+l);
import java.util.Scanner; public class TestScanner{ Scanner scanner = new Scanner(System.in); System.out.println("请输入名字:"); String name = scanner.nextline(); System.out.println("请输入爱好:"); String favor = scanner.nextline(); System.out.println("请输入年龄:"); int age = scanner.nextInt(); System.out.println("##############"); System.out.println(name); System.out.println(favor); System.out.println("来到地球的天数"+age*365); }
未完,待续 ~