MOOC翁凯_零基础学Java语言

Week 1 计算

1.0 计算机与编程语言

程序的执行:解释和编译(翻译成计算机能懂的机器语言)

1.1 第一个Java程序

JRE:Java运行环境,Oracle网站
Eclipse/IDEA:编程软件

  • Alt + / :自动补全代码
  • Ctrl + /:注释comment,单行注释//,多行注释/**/

1.2 变量与计算

读输入

Scanner in = new Scanner(System.in);

变量定义:<类型名称><变量名称>; 变量名称是一种标识符;标识符由字母、数字和下划线组成,数字不能出现在首位;Java关键字/保留字不能用作标识符;Java语言要求变量在第一次被使用前被赋值。

Java是一种强类型的语言,变量在使用前必须定义或声明,且必须具有确定的数据类型。

常量/直接量(literal):final int AMOUNT = 100;

1.3 浮点数计算

浮点数:带小数点的数值,小数点是浮动的,计算机表达非整数(分数和无理数)的一种方式。浮点计算是有误差的(都是二进制惹的祸)

Java中不会遇到定点数

运算符优先级:单目取负,自右向左 a*-b
强制类型转换:(类型)值 优先级高于四则运算

Week 2 判断

2.1 比较

优先级:算数运算>关系运算>赋值运算

2.2 判断

习惯:ifelse后面总是用{},即使只有一条语句

if(expi){
	st1;
	}
else if(exp2){
	st2;
	}
else{
	st3;
	}
if ( a==b ){} else System.out.println("no");
if ( a==b ); else System.out.println("no");

多路分支:

switch(type){ //控制表达式只能是整数型的结果
	case 1: //常量可以是常数,也可以是常数计算的表达式
		sentence; // 寻找匹配的case,并执行其后的语句,直到break为止
		break;
	default:
		sentence;
}

x in [-10, 0] 表示“当 x 的取值在 [-10, 0] 的范围内,结果为真,否则为假”。

Week 3 循环

3.1 循环

while

while(<循环条件>){
	<循环体语句>
}

do-while循环:循环至少会执行一次

do{
	<循环体语句>
}while(<循环条件>);

数数

int number = in.nextInt();
int count = 0;
while(number>0){
	number /= 10;
	count ++;
}

3.2 循环的例子

Math.radom() 得到一个[0,1)范围内的随机数
整数的分解:%10得到个位数;/10去掉个位数

Week 4 循环控制

4.1 for循环

习惯:求和时result初始化为0;求积时resule初始化为1
习惯:只要是for语句就跟上{},即使是空循环

for(初始化; 条件; 单步动作){ // 每一个表达式可以省略
}

Tips for loops

  • 如果有固定次数,用for
  • 如果必须执行一次,用do-while
  • 其他情况用while

复合赋值
i++ 变量+1,表达式为变量原值
++i 变量+1,表达式为变量+1后的值

4.2 循环控制

break vs continue:跳出循环 vs 跳过循环这一轮剩下的语句进入下一轮,仅对当层循环生效;带标号的break和continue可对那个表示循环起作用。

Outer:
for(;;){
	for(;;){
		if(){
		st1;
		break Outer;
		}
	}
}

goto:跳出多层循环

for(;;){
	for(;;){
		if(...) goto OUT;
	}
}
OUT:...

4.3 循环的例子

求最大公约数:碾转相除法

Scanner in = new Scanner(System.in);
int a,b,t;
a = in.nextInt();
b = in.nextInt();
int origa = a;
int origb = b;
while(b!=0){ // 如果b=0,a就是最大公约数
	t = a % b;
	a = b;
	b = t;
	}
System.out.print(a)

逆序分解整数

Scanner in = new Scanner(System.in);
x = in.nextInt();
do{
	System.out.println(x%10);
	x /= 10;
}while(x>0);

逆序输出整数

Scanner in = new Scanner(System.in);
int x = in.nextInt();
int y = 0;
do{
	y = y*10 + x%10
	x /= 10
} while(x>0);

正序输出整数

for(int i=0; i<n; i++){ //n为x的位数,mode为10的n-1次方
	System.out.println(x/mode);
	x %= mode;
	mode /= 10;
}

Week 5 数组

5.1 数组

<类型>[] <名字> = new <类型>[元素个数];
数组变量是数组的管理者而非数组本身

for(<类型><变量>:<数组>){
	...
}

数组的大小无须在写程序时就确定

int n; // 从其他来源处获取 n 的值
char[] chars1 = new char[n];

每个数组有一个内部成员length告诉你元素的数量

int m[] = {1,2,3,4,5};
System.out.print(m.length); // m.length为5

5.2 数组计算

素数:遍历sqrt(x)即可

for(int i=3; i<Math.sqrt(x); i+=2){
	if(x % i == 0){
		isPrime = false;
		break;
}

5.3 二维数组

二维数组:int[][] a = new int[3][5];
初始化:

int[][] a ={
	{1,2,3,4},
	{1,2,3},
};

Week 6 使用对象

6.1 字符类型

单个字符了诶性char:用单引号表示字符面量1a

Java使用Unicode来表示字符,可以表达包括汉字在内的多重字符

逃逸字符:反斜杠+字符,如换行\n、制表位\t

6.2 包裹类型

包裹类型是一种数据类型,他可以像基础类型定义数据类型,区别在于包裹类型把基本数据类型的数据转换为对象的形式,可以像对象一样参与运算和传递,有一系列方法可供使用,如
Integer.MAX_VALUE
Character.isDigital()

6.3 字符串

字符串:用双引号括起来的0个或多个字符就是一个字符串字面量。String是一个类,String的变量是对象的管理者而非所有者。
String s = new String("a string"); //new=创建
输入字符串

  • in.next(); 读入一个第单词,单词的标志是空格(空格包括空格、tab和换行)
  • in.nextLine(); 读入一整行
    字符串操作运算:字符串不可变,操作结果均是制造新的字符串(String方法:菜鸟教程>Java String方法)
String s1 = "hello";
String s2 = "hello";
System.out.println(s1 == s2); // 输出true

字符串的操作:Java菜鸟教程>String类>Sring方法
str.length() 用length()函数获得字符串的长度
str1 == "string" 比较是否为同一个字符串
stri.equals(str2) 比较字符串内容是否相同

Week 7 函数

7.1 函数的定义与调用

public static void sum(int a, int b){
	int sum = 0;
	sum  = a + b;
	System.out.print(sum);

调用函数:()起到了表述函数调用的重要作用
return:停止函数执行,并送回一个值(习惯:单一出口)

7.2 函数参数与函数内的变量

本地变量:定义在函数内部的变量,如参数,作用于在{}块内

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值