0基础学Java笔记整理
0基础学Java笔记整理:mooc课程翁恺
w1:1.0计算机与编程语言
计算机语言 计算机-程序-算法 计算机思维
计算&算法:
计算机所做的事情叫做计算,计算的步骤为算法。
程序的执行:解释&编译
解释:程序能理解我的程序并按照要求执行,有特殊的计算能力
编译:翻译,将程序翻译成计算机懂的语言(机器语言)写的程序,有确定的运算性能
编程&编程软件
写下计算机逐一执行的命令然后计算机来执行,相关的软件写程序帮助运行程序就是编程软件。
补充:下载eclipse jdk并配置环境
system.out.printIn("")字母数字(不需要加“”)中文(引号为英文)
1.2变量与计算
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package hello; import java.util.Scanner; public class Hello { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(123); Scanner in=new Scanner(System.in); // System.out.println("echo:"+in.nextLine()); // System.out.println(2+3+"=2+3="+(2+3)); // System.out.println("100-23="+(100-in.nextInt())); // System.out.println("100-"+in.nextInt()+"="+(100-in.nextInt())); int price; price=in.nextInt(); System.out.println("100-"+price+"="+(100-price)); } }
变量的名字“标识符”:字母数字_,数字不在第一个位置 ,java关键字不可以做标识符
变量定义<类型名称><变量名称>;变量类型/赋值 int price=0; 变量初始化<类型<变量=<初始值
固定不变的数为常数,写在程序中为直接量(literal),定义常量final(修饰符)
1.3浮点数计算
浮点数:带有小数点的数 浮点本意指小数点是浮动的是计算机内部表达非整数(含分数无理数 )的形式,另一种是定点数
double(双精度浮点数,表示浮点类型)
浮点计算有误差egSystem.out.println(1.2-1.1)结果是0.09999999999999987<17位小数>(Android计算器低级错误?都是二进制惹的祸!)
英制计量单位(foot inch)(foot+inch/12.0)*0.3048=m
运算符号优先级
结合运算 eg:result=(result=result*2)*6*(result=3+result)
强制类型转换(优先级高于四则运算) eg:double b=10.3 int a=(int)b //System.out.println("身高是:"+(int)((foot+inch/12)*0.3048*100)+"厘米")
W2、判断
2.1比较
关系运算符:==/!==/<=/>=/</> 其结果逻辑值true/false 优先级:赋值<关系<算术; ==/!==< </>/<=/>=
eg:6>5>4\ a==b>false true/false不能比较大小
注释:单行// ctrl+/ 多行/* */ 行内注释eg:int ak=47/*36*/,y=9;
double a=1.0;
doube b=0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1
System.out.println(a==b); **System.out.println(Math.abs(a-b)<1e-6);
2.2判断
断点:debug
if-else:{ 语句块;}==&= ,缩进一个tab的位置
**if();//;什么也不做
else匹配最近的If
(第三种用于Java便于注释)
2.3分支
级联
if-else到switch-case--break(default):Binary Tree算法
w3:循环
while(){}判断再循环
do{}while();执行一次再判断
计数循环 算平均数 猜数游戏
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
Scanner in=new Scanner(System.in); int number=(int)(Math.random()*100+1);//random[0,1) int a; int count=0; do { a=in.nextInt(); count+=1; if(a>number) { System.out.println("偏大"); } else if(a<number) { System.out.println("偏小"); } } while(a!=number); System.out.println("答对了!"+count+"次");
while到if循环
空循环for();阶乘不能算大的(2^31)
a/=b-1 a=a/(b-1)
a=i++=i a=++i=i+1 (i++/++i=i+1) eg:i=6 a=i++=6 i=7; a=++i=7 i=7
++ -- 单目运算符 递增递减运算符+/-1 算子为变量,前/后缀式
break&continue
嵌套循环 多重循环
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
for(int i=1;i<=9;i++){ for(int j=1;j<=9;j++){ System.out.print("t"+(i*j)); } System.out.println(); }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
Scanner in=new Scanner(System.in); int amount=in.nextInt(); OUT: for(int one=0;one<=amount;++one) { for(int five=0;five<=amount;++five) { for(int ten=0;ten<=amount;++ten) if(one+five*5+ten*10==amount) { System.out.println(one+"张1角"+five+"张5角"+ten+"张1元"); break OUT; } } }
Boolean(逻辑)运算!>&&>|| eg:(2!>2)||((4==4)&&(1<0) if(!(n>0))
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
// f(n)=1-1/2+1/3-1/4+...+1/n Scanner in=new Scanner(System.in); int n=in.nextInt(); double sum=0.0;//有小数/分数double int sign=1; for(int i=1;i<=n;i++) { // sum+=sign*1.0/i;//sign做负号用 // sign-=sign;//可以写入for()中,for(..;i++,.) if(i%2==1) { sum+=1.0/i; } else { sum-=1.0/i; } System.out.println(sum); System.out.printf("%,2f",sum);//printf("")--条件输出
辗转相除法
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//辗转相除法 public static void main(String[] args) { Scanner in=new Scanner(System.in); // int a=in.nextInt(); // int b=in.nextInt(); // int oa=a; // int ob=b; // while(b!=0) { // int r=a%b; // a=b; // b=r; // } // System.out.println(oa+"和"+ob+"的最大公约数为"+a); //枚举法 int a =in.nextInt(); int b =in.nextInt(); int ret=0; int i; for(i=2;i<=a&&i<=b;i++) { if(a%i==0) { if(b%i==0) { ret=i; } } } System.out.println(a+"和"+b+"的最大公约数为"+ret); }
W5:数组
数组:容器;其中所有元素有相同的数据类型,一旦创建不能改变大小
<.类型>[]<名字>=new <类型>[元素个数]; 元素个数必须给出,可为整数或变量
eg: int[] numbers =new int[4];
number[0]=101;number[1]=232;number[2]=231;number[3]=0;
数组作为一个管理者,即使2个数组内容相同,但管理者不能相等,下表[0,元素-1]但编译器不会检查运行可导致程序中止,length为每个数组内部成员告知元素数量for(i=0;i<grade.length;i++) .
可扩展性代码:
for-each循环
没看懂==
二层数组
W6:适用对象
Java采用Unicode16表达字符
在所有的机器上,不管CPU、操作系统和本地语言,字符类型是一致和统一的。一个字符的常量是用单引号包围起来的一个字符,如'a'、'*'、'好'。一个汉字也是Unicode的一个字符,所以也是Java的一个字符。
字符类型:char单个字符 char a='\u0041'/65/(char)(a+'a'-'A') --- A ‘汉’
a+'A'-'a'把小写转为大写,a+'a'-'A'大写边小写
字符+数字为Unicode码表中数之后的字符;两字符减为其距离;char与Int互相赋值(int i='a'-'A')字符能比较大小
逃逸字符:\b\t\n\r\''\'\\ 表达无法印出来的控制字符或特殊字符,\+字符,源自打字机的动作
(\b不等于del;\t使输出上下对齐)
eg:System.out.println("abc\bd") --- abcd (“abc\b”)---abc
6.2包裹类型
每种基础类型都有对应的包裹类型(int--Integer/char-Character),可获得该类型最大最小值
运算符:当需要让一个类/类型做事情的时候,.运算符
Integer.MIN_VALUE
Character
static boolean isDigit/Letter/LetterorDigit/LowerCass/UpperCase/Whitespace(char ch)判断这个字符是不是空格
static char toLowerCass/UpperCass(char ch)
6.3字符串
字符串连接:+ 可以连接两个字符串,一个不是字符串会将之表达为字符串后做连接eg:1+2+“age”/"age"+1+2/"age"+(1+2)---"3age"/"age12"/"age3" "I'm"+18---"I'm 18"
输入字符串:
in.next(); 读入一个单词(单词标志是空格,空格包括空格、tab和换行)
in.nextLine(); 读入一整行
比较:s1.compareTo(s2) 负0正 compareToIgnoreCass可以不区分大小写比较大小
获取String长度:length()
访问String里的字符:s.charAt(index) 与数组一样但不能用for-each循环来遍历字符串
得到子串:s.substring(n)/s.substring(b,e)---n之后,[b,e)
寻找字符:s.indexOf(c) (t) (c,n)/s.lastInedxOf(c).. c字符所在的位置,-1表示不存在/t的位置/n号位置找c
其他:s.startWith(t)/s.endsWith(t)/s.trim()/s.replace(c1,c2)/s.toLowerCase()/s.toUpperCase()
所有的字符串不可变
switch(s){
case "this" ...break;
case "this" ...break;}
new=创建 String s=newString("")
in.next()/in.nextline() equal/compare/length()
s.charAt()/s.substring()/
W7:函数
<返回类型><方法名称>(<参数表>){<方法体>}
函数:一块代码,接受零或多个参数做一件事情并返回零个或一个值
void 函数名(参数表):没有return/不带值的return
调用函数
函数参数:
类型不匹配:char-->int-->double (int)5.0
传值:形参/实参 参数也是本地变量
变量的生存期和作用域
ps:对比
vb中for next;do while..loop
for 变量=初值 to 终值 step步长
语句块
next
步长!=0 为1可以省略