课程链接:共六天
第一天:开发环境:初识java,搭建环境
第二天:语言基础:关键字、变量、常量、运算符
第三天:数据结构:基本类型、包装类型、引用类型(数组和对象)
第四天:流程控制:分支判断、循环迭代、异常处理
第五天:API工具类:字符串方法、身份证解析
第六天:面向对象:封装、继承、抽象、接口
标识符
关键字
关键字:不允许开发者修改的标识符
自定义标识符,变量和常量,开发者可以自己来定义名称。
使用最多自定义标识符就是来标识变量和常量
1)变量:变化的量,定义好变量可以再次赋值,可以赋值多次,之前的值就被覆盖
2)常量:final 变量,只能赋值一次,不能再次赋值,再次赋值会报错!
package cn.tedu.keywords;
//创建一个测试类,测试变量和常量
public class TestVar {
static final String s1 = null; //定义常量,初始化值null
public static void main(String[] args) {
//定义变量:变量类型 变量名称 = 值;
int age = 30; //定义变量age,给它初始化30;
System.out.println(age); //30
//访问变量,改变它的值
//Duplicate local variable age 局部变量重复定义,局部变量在方法体内只能定义一次
age = 40; //第一次再次赋值
age = 50; //第二次再次赋值
System.out.println(age); //50
//常量在变量写法基础上,给它增加一个修饰关键字 final
final String s = "abc"; //字符串
System.out.println(s);
//The final local variable s cannot be assigned. 分配
// It must be blank and not using a compound assignment
//s = "123"; //常量不能再次赋值
System.out.println(s);
//s1 = "aaa"; //The final field TestVar.s1 cannot be assigned
System.out.println(s1);
}
}
数学不行,能不能学好计算机软件
1)不搞大数据算法,人工智能算法,数据挖掘工程师,
就可以学的很好。这类人不需要数学功能。
只需要懂:+加、-减、*乘、/整除、 % 取余
2)大数据算法、人工智能、财务报表、数据挖掘
要求数据功底非常好,统计学,计算机专业,机械制造、数学
概率论、离散数据、高数
第一类企业需求:99%,第二类企业需求:1%,薪资高。
关系运算符结果布尔类型,布尔值:true真,false假
package cn.tedu.keywords;
//取余算术运算符
public class TestMod {
public static void main(String[] args) {
//经典案例:判断一个数字为偶数或者奇数
//对2取余,如果余数0-偶数;如果余数1-奇数
int n = 8;
int r = n % 2; //对n数字进行取余2
//如果+不论是左边还是右边有字符串,这个+就是连接符,
//前面整数java底层会自动转换为字符串
System.out.println(n + "%2=" + r);
}
}
运算符
常见运算符
自增自减
package cn.tedu.keywords;
//自加++和自减--
public class TestSelf {
public static void main(String[] args) {
int n = 10;
//把n加1后再赋值给n,
//赋值语句是先执行右边,计算完结果,然后结果赋值给n
//n = n +1; //10+1
// n++; //等价上面n=n+1
// ++n; //等价上面n=n+1
// System.out.println(n);
//注意演算过程
System.out.println(n++); //10,先打后加,n=11
System.out.println(++n); //12,先加后打,n=12
System.out.println(--n); //11,先减后打,n=11
System.out.println(n--); //11,先打后减,n=10
}
}
关系运算符
package cn.tedu.keywords;
//关系运算符,运算的结果布尔值
public class TestEqu {
public static void main(String[] args) {
int age1 = 20;
int age2 = 10;
//判断相等 ==
System.out.println( age1 == age2 ); //true,false
//判断不等 !=
System.out.println( age1 != age2 ); //false,true
//判断小于等于 <=
System.out.println( age1 <= 18 ); //true,false
}
}
与或非
package cn.tedu.keywords;
/*
* 逻辑运算符:
* 与and && 特点:有一个为false结果就为false
* 或or || 特点:有一个为true结果就为tue
* 非not ! 特点:取反
*/
public class TestAndOrNot {
public static void main(String[] args) {
boolean b1 = false; //true;
boolean b2 = false;
System.out.println( b1 && b2 ); //false,并列,false
System.out.println( b1 || b2 ); //true,或者,false
System.out.println( !b1 ); //false,取反,true
//把所有情况穷举
//与 &&
System.out.println( true && true ); //true
System.out.println( true && false ); //false
System.out.println( false && true ); //false
System.out.println( false && false ); //false
//或 ||
System.out.println( true || true ); //true
System.out.println( true || false ); //true
System.out.println( false || true ); //true
System.out.println( false || false ); //false
}
}
利用三目表达式求最大值
package cn.tedu.keywords;
/*
* 独特:三元(三目)表达式
* 固定结构:3个部分组成,a布尔表达式 ? b值:c值
* 结果:如果表达式true,返回b,如果表达式false,返回c
* 经典案例:两个值求最大值
*/
public class Test3Var {
public static void main(String[] args) {
int x = 300;
int y = 100;
//x>y 布尔表达式,它结果true/false
int r = x>y ? x : y;
System.out.println( r );
}
}
三个值求最大值
package cn.tedu.keywords;
/*
* 独特:三元(三目)表达式
* 固定结构:3个部分组成,a布尔表达式 ? b值:c值
* 结果:如果表达式true,返回b,如果表达式false,返回c
* 经典案例:两个值求最大值
*/
public class Test3Var {
public static void main(String[] args) {
int x = 300;
int y = 100;
int z = 500;
//1、两个值求最大值,应用一次三目表达式
//x>y 布尔表达式,它结果true/false
int r = x>y ? x : y;
System.out.println( r );
//2、三个值求最大值,应用两次三目表达式
r = x>y ? x : y; //此时r代表了x和y中的最大值
//拿最大值r和z进行比较
r = r>z ? r : z;
System.out.println( r );
//3、三个值求最大值,一行写完
//r = x>y ? x : y; //这个表达式就可以当做一个值,和z比较即可
r = (x>y ? x : y)>z ? (x>y ? x : y) : z; //利用小括号进行优先计算
System.out.println( r );
}
}
加等、减等、乘等、除等
package cn.tedu.keywords;
//快捷加+=、减-=、乘 *=、除 /=(整除)
public class TestYun {
public static void main(String[] args) {
int a = 10;
int b = 2;
//加+=
//System.out.println( a+=b ); //12
a = a+b;
System.out.println( a ); //当前a=12
//减-=
System.out.println( a-=b ); //等价于 a-b结果赋值a a=a-b; 当前a=10
//乘*=
System.out.println( a*=b ); //当前a=20
//整除 /=
System.out.println( a/=b ); //当前a=10
}
}
测试新方式
jUnit单元测试
在运行测试类,main很讨厌,它只能有一个。这时我们假定需要多个方法去执行,如果写成多个方法,太麻烦。把不用代码屏蔽,打开其他代码,来回屏蔽,也不方便。
引入新的技术,可以在一个类中有多个测试方法,每个方法独立。这个技术jUnit 单元测试。
开发步骤:
1)在项目中引入jUnit支持 (一个项目中只需要一次)
2)在类中导包import。org.junit.Test
3)在指定的方法上戴个帽子:@Test 注解
2和3步骤,需要单元测试junit,就得导入
4)运行 java junit
可以运行所有方法,也可以指定单个运行
jUnit执行一个类的多个方法
package cn.tedu.keywords;
//调用@Test注解@interface标识
//导包语句可以自己写
import org.junit.Test;
//这个类单元测试类
//写@Test注解,eclipse会提示我们导入jar,里面很多class,Test.class
/*
* 有多个方法,任何空白地方右键运行junit test
* 会执行哪个方法? 都执行
* 会全部执行吗? 是
* 有顺序吗?junit没有顺序
*/
public class TestSelfUnit {
@Test //导包过了,无需再次导入import写一次多次调用
public void sub() {
int i = 10;
System.out.println( "sub " + i-- );
}
//规定:单元测试方法必须开放public,无返回值void,必须无参
@Test //这个注解必须放在方法上面
public void add() {
int i = 10;
System.out.println( "add " +i++ );
}
}