JavaSe第二天笔记小记
JavaSE第二天学习小记
1、类型转换
低---------------------------------------->高
byte, short, char -> int -> long -> float -> double
1位、2位、2位、4位、8位、4位、8位
注:小数的优先级比整数高
- 不能对布尔值进行转换
- 不能把对象类型转换成不相干的类型
- 在把高容量(高优先级)转换成低容量(低优先级)的时候,强制转换
- 转换的时候可能存在内存溢出,或者精度问题
2、变量、常量、作用域
变量:可以变化的量
- 每个变量都有类型,类型可以是基本类型也可以是引用类型
- 变量名必须为合法的标识符
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束
局部变量:在两个大括号之间定义的变量
- 必须声明和初始化值
实例变量:在类内部定义的变量
- 从属于对象,如果不自行初始化,这个类型的默认值为
0,0.0,false,null - 除了引用类型之外的默认值都为null
类变量:static关键字修饰的实例变量
常量:初始化后不能再改变值,即不会变动的值
- final修饰
- 常量名一般使用大写字符
变量的命名规划
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则,例如moneySalary
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线,例如MAX_VALUE
- 类名:首字母大写和驼峰原则,例如Man、GoodMan
- 方法名:首字母小写和驼峰原则,例如run(),runRun()
3、运算符
| 运算符 | |
|---|---|
| 算术运算符 | +,-,*,/,%,++,-- |
| 赋值运算符 | = |
| 关系运算符 | >,<,>=,<=,==,!=,instance of |
| 逻辑运算符 | &&,||,! |
| 位运算符 | %,|,^,~,>>,<<,>>> |
| 条件运算符 | ? : |
| 扩展赋值运算符 | +=,-=, *=,/= |
位运算例子:
A = 0011 1100
B = 0000 1101A & B = 0000 1100——有0就0,没0就1
A | B = 0011 1101——有1就1,没1就0
A ^ B = 0011 0001——相同则0,不同则1
~B = 1111 0010——取反
<< 相当于*2
>> 相当于/2效率很高
问题:如何最快的计算出2*8的值
答:2<<3
4、包机制
包即文件夹
用处:更好的组织类,用于区分类名的命名空间
- 一般利用公司域名倒置作为包名
- 为了能够使用某一个包的成员,我们需要在java程序中明确导入该包,使用
import语句可完成此功能
JDK中常用包介绍:
- java.lang——包含一些java核心类,如String、Math、Integer、System和Thread,提供常用功能
- java.net——包含执行与网络相关的操作的类和接口
- java.io——包含能提供多种输入/输出功能的类
- java.util——包含一些实用工具类,如定义系统特性、接口的集合框架类、使用与日期日历相关的函数
- java.text——包含了一些java格式化相关的类
- java.sql——包含了java进行JDBC数据库编程的相关类/接口
- java.awt——包含了构成抽象窗口工具类(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)
- java.applet——包含applet运行所需的一些类
5、JavaDoc
用处:javadoc命令用来生成自己的API文档
参数信息
- @author 作者名
- @version 版本号
- @since 指明需要最早使用的jdk版本
- @param 参数名
- @return 返回值情况
- @throws 异常抛出情况
6、Scanner
存在包:java.util.Scanner
基本语法:
Scanner in = new Scanner(System.in);
常用方法:
- next()
- 一定要接受到有效字符后才可以结束输入
- 对输入有效字符之前的空白,next()方法会自动将其去掉
- 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
- next()方法不能得到带有空格的字符串
- nextLine()
- 以ENTER为结束符,即返回回车之前的所有字符
- 可以获得空白
7、流程控制
java中的流程控制与C++中的大体相同
除了if、switch、while、dowhile、for、break、continue之外,还需要补充的有:
- 增强for循环
public class Hello {
public static void main(String[] args) {
int[] num = new int[]{1, 2, 3 ,4, 5};
for (int i: num) {
System.out.println(i);
}
}
}
- 带标签的continue
public class Hello {
public static void main(String[] args) {
// 求101~150之间的质数
outer:for(int i = 101; i < 150; i++){
for(int j = 2; j < 150/2; j++){
if(i % j == 0){
continue outer;
}
}
System.out.println(i + " ");
}
}
}
8、java方法
- 方法即c++中的函数,但是java中的方法体现了oop的思想
- 方法包含于类或对象中
- 方法在程序中被创建,在其他地方被引用
设计方法的原则:一个方法只完成一个功能,这样有利于我们后期的扩展
8.1 方法的重载
定义:重载就是在一个类中,有相同的函数名称,但形参不同的函数
- 方法名称必须相同
- 参数列表必须不同(个数不同/类型不同/参数排列顺序不同)
- 方法的返回类型可以相同也可以不相同
- 仅仅返回类型不同不足以成为方法的重载
8.2 命令行传参
运行一个程序时候再传递参数给它
public class Hello {
public static void main(String[] args) {
for (int i = 0; i < args.length; i++){
System.out.println(args[i]);
}
}
}
8.3 可变参数
- 从jdk1.5开始,java支持传递同一类型的可变参数给一个方法
- 在方法声明中,在指定参数类型后加一个省略号(...)
- 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数,任何普通的参数必须在它之前声明
public class Hello {
public static void main(String[] args) {
Hello hello = new Hello();
hello.method(1,2,3,4,5);
}
// 一个带有可变参数的方法
public void method(int... i){
// System.out.println(i); // 这里会输出一个地址信息,说明i在这里是作为一个对象来使用
// 这里说明i本质是一个数组
for(int j = 0; j < i.length; j++){
System.out.println(i[j]);
}
}
}
8.4 形参与实参
实参:如果是基本类型或者String,则实参不会变(传的是值);
如果是对象集合或者数组,则实参会改变(传的是引用)。
小Tips:
- JDK7新特性:数字之间可以用下划线分割,例如
int money = 10_0000_0000;
默默努力也能成为一个不输别人的人

浙公网安备 33010602011771号