Java 重学笔记 1

1. 变量Variable

JAVA是一种强类型语言,每个变量都需要声明其类型。
变量是程序中最基本的存储单元。要素包括变量名,变量类型和作用域。
变量在使用前必须对其声明。
type varName [= value] [{varName}value}];

int a;
int x, y, z;

局部变量和实例变量
局部变量(local variable):方法或语句块内部定义的变量。
实例变量/成员变量/属性:
- 方法外部、类的内部定义的变量。
- 如果不自动进行初始化,它会自动初始化或该类型的默认初始值(数值型初始化为0或0.0,字符型变量初始化是16为的0,布尔型变量默认是false)

局部变量需要先初始化,即赋值

2.常量 Final

只能被初始化一次。

final int c = 34;
c = 35;
// error,不能为最终变量赋值
final int MAX_SPEED = 120;
// 常量一般用大写来区分。
// 两个单词用下划线分开。

命名规范
所有变量、方法、类名:见名知意。
变量、方法名:
- 首字母小写和驼峰原则
- run(), runRun(), age ageNew monthSalary
常量:
大写字母和下划线
类名:
首字母大写和驼峰原则:Man, GoodMan

3.运算符

① 赋值运算符=
② 算术运算符
二元运算符 + - * / %
一元运算符 ++ , –

类型提升:
整数运算:
- 如果两个操作符有一个为long,则结果为long
浮点运算:
如果一个操作符为double,则结果为double。

// operator
double d = 10.2 % 3;
// 1.99999999993
// 小数也可以取余数
int a = 3;
// 自增
int b = a++; // 先赋值,在自增 
int c = ++a; // 先自增,在赋值
// b = 3    c = 5

③ 布尔表达式
逻辑与: &&
逻辑或: ||
逻辑非: !
短路的方式。从左到右计算,如果确定值则不会再计算下去。

int c = 3 / 0;
// 抛出异常,算术异常 by/zero

boolean c = 1 > 2 && (3 / 0)
// 不会抛异常,说明没有执行3/0
// 即执行了短路原则

④ 位运算符
~ 取反
& 按位与
| 按位或
^ 按位异或
以下权限管理用的较多
<< 左移运算符

右移运算符
右移一位相当于除2取商。
左移一位相当于乘2。

int m = 8;
int n = 4;
m & n;
m | n; 
~m; // -9
m ^ n; // 12

int a = 3 * 2 * 2;
int b = 3 << 2;
int c = 12 / 2 / 2;
int d = 12 >> 2;

补充:

boolean b1 = ture & false;
// boolean一位
// 但没有短路的功能。

⑤ 扩展运算符
+= a+=3; a = a + 3;
-=
*=
/=
%=
⑥ 字符串连接符
+运算符两侧操作数只要有一个是字符串(String)类型,系统将自动将另一个操作数转换为字符串再进行连接。

String str = "5";
int s = 4;
s + str;
// 45

⑦ 三目条件运算符
x ? y : z
x是boolean类型表达式,先计算x的值,若为true,则整个三目运算结果位表达式y的值,否则是表达式z的值。

int a = 3;
int b = 5;
String str = "";
str = (a < b) ? "a<b":"a>b"
// 类似简单的if-else

优先级问题
记住先乘除后加减
表达式里面优先使用小括号来组织。

4. Eclipse开发环境的使用

下载地址:
http://www.eclipse.org/downloads/
windows -> show view打开一些视图。

src目录:源代码
bin目录:编译过的.class文件

// debug模式
双击加断点。使用 debug as。
F6运行到下一行。
F5进入到方法中。
F8运行完成。

5. 控制语句

顺序结构
选择结构:单选,双选,多选
循环结构

5.1 if-else语句

public class TestIf() {
    public static void main(String[] args) {
        double d = Math.random();// [0 ,1)
        int e = (int)(d * 5); //[0, 4] 只取整数部分
        int e1 = 1 + (int)(d * 6); // [1, 6]

        // 单选
        if (e > 3) {
            System.out.println("大数!");
        }
        // 只有一句的时候,可以不加花括号,但建议加花括号。
    }

    // 双选
    else {
        System.out.println("小数!");
    }

    // 多选择结构
    if (e == 6) {

    } else if (e >= 4) {

    } else if (e >= 2) {

    } else{

    }
}

5.2 Switch语句

double d = Math.random();
int e = 1 + (int)(d * 6);

switch(e) {
case(6):
    ...
    break;
case(5):
    ...
    break;
case(4):
    ...
    break;
default:
    ...
    break;
}
// 如果没有break,break后面的语句都会执行。case穿透现象
// 利用case穿透
char c = 'a';
int rand = (int) (26 * Math.random());
char c2 = (char)(c+rand);
switch(c2) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
    System.out.println("元音");
    break;
}

JDK7.0 新特性:Switch增强

JDK7之前:表达式结果只能是int(可以自动转化位int的byte、short、char),枚举类型。
表示结果可以是:字符串。

// 测试JDK7.0新特性Switch
String a = "gaoqi";
switch(a) {
case "mashibing":
    ...
    break;
case "gaoqi":
    ...
    break;
default:
    ...
    break;
}

5.3 while循环

如何符合条件,则再来一次。

int a = 1; // 初始化
while(a <= 100) { //条件判断
    System.out.println(a);// 循环体
    a++; // 迭代
}

while 先判断在执行
do-while 先执行再判断

5.4 for循环

变量改名:Alt + shift + R。
也可以右键

5.5 课堂练习

// 九九循环表
for (int i = 1; i <= 9; i++) {
    for (int j = 1; j <= i; j++) {
    System.out.print(i + " * " + j + " = " + i*j + "\t");
}
    System.out.println("");
    }
}
// 编程求 Σ1+ Σ2 + ... + Σ100
int sum = 0;
int sum2 = 0;
for (int j = 1; j <= 100; j++) {
    for (int i = 1; i <= j; i++) {
        sum += i;
    }
    sum2 += sum;
}
System.out.println(sum);

5.6 break continue

break 循环退出
continue 跳过当前这个循环,继续下一次循环。

带标签的break和continue。
JAVA不使用goto,但goto是保留字

// 100 ~ 150 的所有质数
outer: for(int i = 101; i < 150; i++) {
    for (int j = 2; j < i / 2; j++) {
        if (i % j == 0) 
        // 类似goto的用法,跳到外部的循环
            continue outer;
    }
    System.out.println(i + " ");
}

6. 方法

method,function

完成特定功能。复用方便。

// 设计方法的原则:方法的本意是功能块,就是实现某个功能的的语句块的集合。
设计方法的时候,最好保持方法的原子型。这样有利于我们后期的扩展。

定义:
[修饰符1 修饰符2 …] 返回值类型 方法名(形式参数列表) {
JAVA语句
}

return作用:返回值和结束方法的运行。
JAVA中只有值传递。(看之后的内存分析)

7. 递归方法的详解

递归是一种常见的解决问题的方法,即把问题简单化。
Recursion
定义递归头,用于解决:什么时候不调用自身方法。
递归头:什么时候需要调用自身方法。

8. 接收键盘的输入

Scanner类

// 构造器
Scanner s = new Scanner(System.in);
String str = s.next(); // 程序运行到next会阻塞,等待键盘输入
System.out.println("键盘输入" + str);

9. API文档

API是Application Programming Interface 应用程序编程接口。
一个API文档页面构造如下:
左上角:所有的包。
左下角:所有的类。
右边:类的介绍。

package包的概念:
- 为了解决类之间的重名问题。
- 为了管理类:合适的类位于合适的包。

包的命名规则
- 通常是类的第一句非注释性语句(打包语句package cn.bjsxt.test
- 包名:域名倒着写,再加上模块名,并与内部管理类。

注意事项:
- 写项目不要用默认包
- com.gao和com.gao.car,这两个包没有包含关系。
常用包
- java.lang 包含一些java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能。核心包直接用。
- java.awt 包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)
- java.net 包含执行与网络相关的操作的类
- java.io 包含能提供多种输入/输出功能的类。
- java.util 包含一些使用工具类,如定义系统特性、使用与日期日历相关的函数。

生成自己项目的API文档

使用JAVADOC生成API文档。
解决问题:代码和文档的分离
特殊的注释:

// 类
/** 
 * 类描述
 * @Author 作者
 * @version 项目版本
 */

// 方法
/**
 * 解释方法作用
 * @param 参数 参数介绍
 * @return 返回值的定义
 * @throws 抛出异常描述
 * @deprecated 废弃、建议用户不再使用该方法
 */

右键export -> Java -> Javadoc。生成文档。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值