JavaSe第二天笔记小记

JavaSE第二天学习小记

1、类型转换

低---------------------------------------->高

byte, short, char -> int -> long -> float -> double

1位、2位、2位、4位、8位、4位、8位

注:小数的优先级比整数高

  1. 不能对布尔值进行转换
  2. 不能把对象类型转换成不相干的类型
  3. 在把高容量(高优先级)转换成低容量(低优先级)的时候,强制转换
  4. 转换的时候可能存在内存溢出,或者精度问题

2、变量、常量、作用域

变量:可以变化的量

  • 每个变量都有类型,类型可以是基本类型也可以是引用类型
  • 变量名必须为合法的标识符
  • 变量声明是一条完整的语句,因此每一个声明都必须以分号结束

局部变量:在两个大括号之间定义的变量

  • 必须声明和初始化值

实例变量:在类内部定义的变量

  • 从属于对象,如果不自行初始化,这个类型的默认值为 0, 0.0, false, null
  • 除了引用类型之外的默认值都为null

类变量:static关键字修饰的实例变量

常量:初始化后不能再改变值,即不会变动的值

  • final修饰
  • 常量名一般使用大写字符

变量的命名规划

  • 所有变量、方法、类名:见名知意
  • 类成员变量:首字母小写和驼峰原则,例如moneySalary
  • 局部变量:首字母小写和驼峰原则
  • 常量:大写字母和下划线,例如MAX_VALUE
  • 类名:首字母大写和驼峰原则,例如Man、GoodMan
  • 方法名:首字母小写和驼峰原则,例如run(),runRun()

3、运算符

运算符
算术运算符 +,-,*,/,%,++,--
赋值运算符 =
关系运算符 >,<,>=,<=,==,!=,instance of
逻辑运算符 &&,||,!
位运算符 %,|,^,~,>>,<<,>>>
条件运算符 ? :
扩展赋值运算符 +=,-=, *=,/=

位运算例子:

A = 0011 1100
B = 0000 1101

A & 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中常用包介绍:

  1. java.lang——包含一些java核心类,如String、Math、Integer、System和Thread,提供常用功能
  2. java.net——包含执行与网络相关的操作的类和接口
  3. java.io——包含能提供多种输入/输出功能的类
  4. java.util——包含一些实用工具类,如定义系统特性、接口的集合框架类、使用与日期日历相关的函数
  5. java.text——包含了一些java格式化相关的类
  6. java.sql——包含了java进行JDBC数据库编程的相关类/接口
  7. java.awt——包含了构成抽象窗口工具类(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)
  8. 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()
    1. 一定要接受到有效字符后才可以结束输入
    2. 对输入有效字符之前的空白,next()方法会自动将其去掉
    3. 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
    4. next()方法不能得到带有空格的字符串
  • nextLine()
    1. 以ENTER为结束符,即返回回车之前的所有字符
    2. 可以获得空白

7、流程控制

java中的流程控制与C++中的大体相同

除了if、switch、while、dowhile、for、break、continue之外,还需要补充的有:

  1. 增强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);
        }
    }
}
  1. 带标签的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;
posted @ 2020-07-20 00:47  lorz5  阅读(171)  评论(0)    收藏  举报