day2
照常碎碎念:
都一些基础,学过c++很快就能学完
变量
-
类变量: 在类里面声明类似于static int a=7的
-
实例变量: 在类里面声明变量,没有static关键词,如果在初始类时没初始化这些变量,其会变成对应类型的默认值 eg: int->0 string->null
-
常量: 类似于c++的const java内关键词为final,之后不能改变其值
-
static,final,private等等这种修饰词不区分前后顺序,例如final static int=0 或者 static final=0
-
命名规范:请添加图片描述变量与函数名都采取首字母小写和驼峰 常量采取大写字母和下划线 类名首字母大写和驼峰
运算符
-
数值运算中遇到两个变量不同类型的,会把字节数少的类型自动转成较大的类型,例如int+long 会把int转成long,如果需要强制转换需要在前面加上int,列如将long a转成int为int(a),但这样会把long类型前面的4个字节截断。
-
byte:一个字节的带正负的类型(java中没有无符号整数类型???)
-
a++与++a: a++先赋值再相加 ++a先相加再赋值
-
&&符号前面要是是假的,后面就不执行不判断
-
位运算:&与 |或 ~非 ^异或
-
有符号右移>>:若该数为正则高位补0,该数为负则高位补1;左移<<直接低位补0;(涉及到计组中的补码)
-
无符号右移>>>:无论正负,高位补0
-
三元运算符a? b:c 若a会真则b,a为假则c
包机制
- package: 通常使用域名倒置例如 package com.sun.www
- 如果需要使用其他包的类,需要使用Date的话,需要import java.util.Date 注意!!!import要在package下面 加上*后会将该package中所有的类导入进来,会降低编译速度但不会降低运行速度, java中会默认导入java.lang包下所有类
帮助文档 JavaDoc
使用这样可以加帮助文档
在命令行中输入如下,可以生成帮助文档,使编码和字符集为UTF-8可以防止中文出错
点击index.html即可查看文档
在Intellij中也可以生成JavaDoc文档,tool -> Generate JavaDoc
流程控制
-
Scanner: 使用new Scanner(System.in)来创建对象,函数hasNext()代表是否有输入 next()为拿到用户的输入信息 注意使用完后要close()节省内存。
有两个函数next()和nextLine()区别:
next()一定要读取到有效字符才可以结束输入,得到有效字符后会将后面输入的空白作为结束符,不能得到带有空格的字符串!nextLine()以Enter作为结束字符,可以得到带有空格的字符串
hasNextInt()判断输入的是否是整数 其他的类似
-
if switch类似c++ 但是java中switch中的判断可以为字符串 IDEA可以通过打开class文件来进行反编译 字符串在switch中是通过哈希值来实现的
-
while do-while for与c++一样,do-while保证执行一次,先执行再判断
for(x:数组或集合)这样可以遍历数组或集合中的元素 -
可以在continue之前加入标签,以实现goto
方法 (即函数)
-
java中是值传递(真没有引用传递吗?)
-
方法重载规则:
1、方法名称必须相同
2、参数列表必须不同(个数不同、类型不同、参数排列顺序不同)
3、仅仅返回类型不同不足以成为方法的重载原理:方法名称相同时,编译器会根据调用方法的参数个数,类型去逐个匹配!
-
命令行传参,通过java+ 编译文件 +参数可以传参数到main函数中 其次运行时要输入完整的包路径,否则无法运行
-
可变参数:在方法的最后一个参数中写…可以传入多个且不定数量的参数,如public void test(int …)
注意!!!一定要在最后一个参数中加…否则会报错,列如public void test(int … a, int b)会报错 -
递归与c++类似