复习
jvm : 虚拟机 --> sandbox
jre : jvm + 核心类库
jdk : jre + 工具,javac java
path: 操作系统搜索路径
classpath: java搜索类的目录顺序java -classpath d:\java;d:;.
-
java程序制作过程
1) 编写java源文件记事本notepad
editplus
2) 编译源文件,生成class文件(字节码文件)
3) 运行程序class文件java 类名(在classpath下找)
java -classpath | -cp 类名
java关键字
-
数据类型
- class //类
- interface //接口
- byte //字节 bit:位
- short //短整型 2 byte
- int //整型 4 bytes
- long //长整型 8 bytes
- float //浮点型
- double //双精度浮点.
- char //字符
- boolean //布尔 false true
- void //空
- null //空,不存在
-
流程控制
- if //如果
- else //否则
- switch //分支
- case //情况.
- default //默认,缺省
- while //当.. 循环
- do //
- for //for 循环
- break //中断
- continue //继续
- return //返回
-
访问权控制
private //私有的
proected //受保护的
public //公共的
-
类,函数修饰符
abstract //抽象
final //最终的
static //静态的
synchronized//同步
extends //扩展
implements //实现
new //新建
this //当前
super //超类,父类,
instanceof //是否是xxx实例
try //尝试
catch //捕获
finally //最终
throw //抛出
throws //定义类声明时,抛出异常
package //包
import //导入 export
native //本地的
transient //瞬时的,暂时的,临时的 persistent
asset //断言
-
标识符
- 26个英文字母
- 数字0-9
- _ + $
规范
java区分大小写
包名: aaa.bbb.ccc.ddd,全都小写
类: helloWorld --> HelloWorld,
变量和函数: convertStringToInt --> convertString2Int
常量大写: final String BRAND ="benz" ;
Demo: 演示作用
java的负数采用补码方式存储:取反 + 1 。
-
java中基本数据类型:primitive
- 默认整数是int类型,默认浮点数是double类型.
- 升格自动转换。隐式转换。
- 降格强制转换。显式转换。
注释
-
单行注释
//xxxxxxxx
-
多行注释
/*
* 多行注释
*/ -
文档注释: 类顶端
/**
* 文档注释
*/
存储范围换算
2^10 = 1024 = 1K
2^20 = 1024K = 1M
2^30 = 1024M = 1G
2^40 = 1024G = 1T
进制
十进制:0~9,(123,456)
二进制:0,1
八进制:0~7,以0开头(076)
十六进制:0~F,以0x开头(0x12,0xfe)
定权重:位高权重
进制转换
[十进制转二进制]
使用除法
2 | 13 ........ 1
2 | 6 ......... 0
2 | 3 ......... 1
2 | 1 ......... 1
---> 1101
内存中数据存储形式
-
byte: 2^8 = 256, -128~127
3 + (-3) =
0000 0011
+
1000 0011
-------------
= 1000 0110 = -6 -
负数的表现形式: 补码(正数取反+1)
124 = 0111 1100 | -124 = 1000 0100
125 = 0111 1101 | -125 = 1000 0011
126 = 0111 1110 | -126 = 1000 0010
127 = 0111 1111 | -127 = 1000 0001
| -128 = 1000 0000
判断结构
if(exp){
....
}if(exp1){
...
}
else{
...
}if(exp1){
...
}
else if(exp2){
...
}
...
else{
...
}
switch
支持的类型: byte short int char
循环语句
while(exp){
....
}//至少执行一次.
do{
...
}while(exp)
function
main() function
Modifier : public static void
一段独立程序
修饰符 返回值 函数名(参数类型1 参数名称1,参数类型2 参数名称2,...){
函数body
return ;//只有void类型的返回值才可以不写return.
}
变量的使用范围
仅在所处的{}中有效,也称之为生命,下面程序编译时会报错:
/**
*这是我的类,演示版。
*/
class CommentDemo{
/*
* 程序的入口点。args是参数。
*/
public static void main(String[] args){
{
int age = 20;
}
// 输出helloworld
System.out.println("hello world" + age);
}
}
强类型语言
javascript----弱类型语言,var
java-----强类型
int age = 20;
String name = "xxxx";
java中基本数据类型
byte, 1个字节
short, 2个字节
int, 4个字节
long, 8个字节
float, 4个字节
double, 8个字节
boolean, 1个字节
char, 两个字节
整数默认:int,小数默认:double
引用类型:
class
interface
[], 数组
特殊字符
'\t' //tab
'\r' //return
'\n' //new line
所有的byte、short、char 都将提升到int型
运算符
/**
*这是我的类,演示版。
*/
class CalcDemo{
/*
* 程序的入口点。args是参数。
*/
public static void main(String[] args){
int i = +5;
int j = -5;
System.out.println("i = " + i + ",j = " + j);
System.out.println("i = " + (+i) + ",j = " + (-j));
// + - * /
System.out.println(5 + 5);
System.out.println(5 - 5);
System.out.println(5 * 5);
System.out.println("==="+ ((float)5 / 3 * 3));
//取模
System.out.println(5 % 3); //求余
// ++ --
int a = 5, b = 5;
System.out.println("a = "+(a++)); //
System.out.println("b = "+ (++b)); //
// + 操作符重载
System.out.println("hello"+ "world"); //
System.out.println("5 + 5 = "+ (5 + 5)); //
//赋值 = += -= *= /= %=
int a1 = 5;
System.out.println("a1 += "+ (a1+=3)); //
short s = 2;
s = (short)(s+2);
s += 2;
System.out.println("s = "+ s); //
//比较运算符 == <> !=
boolean res = 5<= 5;
System.out.println(5<=5);
System.out.println(res);
System.out.println(5!=5);
Object o = "hello" ;
//instanceof 判断对象是否是指定的类型,后面跟的是引用类型
System.out.println(o instanceof String);
System.out.println(o instanceof Object);
//System.out.println(o instanceof int);//报错
System.out.println(o instanceof Class);
//逻辑运算符
// && || 存在短路操作
int c1 = 8, c2 = 3;
if(c1>5 && c2>5){
System.out.println("Ok");
}
else{
System.out.println("no ok");
}
if(c1>5 || c2>5){
System.out.println("Ok");
}
else{
System.out.println("no ok");
}
// & | ! ^ 不存在短路
if((c1 > 5) & (c2>5)){
System.out.println("Ok");
}
else{
System.out.println("no ok");
}
//System.out.println(5 && 6);//报错
System.out.println(true && false);
// 5 0000 0101
// 6 0000 0110
// ------------
// 0000 0100 = 4
System.out.println(5 & 6);//结果为4,按位与
System.out.println(5 | 6);//结果为7,按位或
//System.out.println(!6);//报错
//对boolean类型取反
System.out.println(!true);
boolean b0 = 3>4;
System.out.println(!b0);
//按位取反 ~
// 0000 0000 0000 0000 0000 0000 0000 0101
// 1111 1111 1111 1111 1111 1111 1111 1010
// 0000 0000 0000 0000 0000 0000 0000 0110
System.out.println(~5);
//异或 ^,按位异或,相同为假,不同为真
// 0...0 0101 = 5
//^0...0 1100 = 12
//------
// 0...0 1001 = 9
System.out.println(5^12);
//移位运算
// << 有符号左移
// >> 有符号右移
// 0000 1010 = 10
// 0010 10 00 = 40
System.out.println("10 << 2 = " + (10<<2));
System.out.println("6 << 2 = " + (6<<2));
// 0000 0110 = 6
// 0000 0001 = 1
System.out.println("6 >> 2 = " + (6>>2));
// -6 1111 1010
// -6 << 2 1110 1000 = -24
// 0001 1000
System.out.println("-6 << 2 = " + (-6<<2));
// -6 1111 1010
// -6 >> 2 1111 1110 = -2
// 0000 0010
System.out.println("-6 >> 2 = " + (-6>>2));
// >>> 无符号右移,空出的位用0填充
// -6 1111 1010
// -6 >>> 2 0011 1110 =
System.out.println("-6 >>> 2 = " + (-6>>>2));
System.out.println("-1 >> 3 = " + (-1>>3));
System.out.println("-1 >>> 3 = " + (-1>>>3));
// 三元运算符 ? : ;
int i1 = 10;
if(i1 < 5){
System.out.println("<5");
}
else{
System.out.println(">=5");
}
System.out.println(i1 < 5 ? "<5" : ">=5");
int x = 5, y = 6, z = 7;
System.out.println(x>y? x : y);
//三元运算符的嵌套
System.out.println(x>y? (x>z? x : z) : (y>z? y:z));
}
}
流控制
/**
* 流程控制
*/
class FlowControl
{
public static void main(String[] args){
//1. if
int a = 10;
if(a>5){
System.out.println("a is big");
}
//2. if - else,非此即彼
if(a<5){
System.out.println("a is small");
}
else{
System.out.println("a is big");
}
System.out.println("over");
//3. if - else if - else
// month 1-12
int m = 100;
if(m<=3 && m >=1){
System.out.println(m+"是春季");
}
else if (4<=m && m<=6){
System.out.println(m+"是夏季");
}
else if (7<=m && m<= 9){
System.out.println(m+"是秋季");
}
else if(m>=10 && m<=12){
System.out.println(m+"是冬季");
}
else{
System.out.println(m+"是无效的月份");
}
//4.另一种写法
if(m<=0 || m>=13){
System.out.println(m+"是无效的月份");
}
else if(m<=3){
System.out.println(m+"是春季");
}
else if(m<=6){
System.out.println(m+"是夏季");
}
else if (m<=9){
System.out.println(m+"是秋季");
}
else{
System.out.println(m+"是冬季");
}
//5. switch语句
int b = 2;
switch (b){
case 1:
case 2:
case 3:
System.out.println("small");
break;
case 4:
System.out.println("midlle");
//break;
case 5:
System.out.println("big");
break;
default:
System.out.println("??");
break;
}
//6.利用switch判断月份
int n = 11;
switch (n){
case 1:
case 2:
case 3:
System.out.println(n+"是春季");
break;
case 4:
case 5:
case 6:
System.out.println(n+"是夏季");
break;
case 7:
case 8:
case 9:
System.out.println(n+"是秋季");
break;
case 10:
case 11:
case 12:
System.out.println(n+"是冬季");
break;
default:
System.out.println(n+"是非法月份");
break;
}
//7. 简单写法
int c = 12;
if (c<1 || c>12){
System.out.println("非法月份");
return;
}
int season = (c-1)/3;
switch(season){
case 0:
System.out.println("春");
break;
case 1:
System.out.println("夏");
break;
case 2:
System.out.println("秋");
break;
default:
System.out.println("冬");
break;
}
//8. while循环
int i = 0;
while(true){
System.out.println(i);
i ++ ;
if(i>=10){
break;
}
}
System.out.println("--------");
//9. do...while循环
i = 0;
do{
System.out.println(i);
i ++ ;
if(i>=10){
break;
}
}while(i>1);
//10.打印直角三角形
int k = 10;
int k1 = 1;
while(k1<=10){
//输出整个一行
int k2 = 1;
while(k2<=k1){
System.out.print("*");
k2++;
}
System.out.println();
k1++;
}
//11. 99表格
int line = 9;
int row = 1;
//行循环
while(row<=9){
//列循环
int col = 1;
while(col <=row){
System.out.print(col + "x" + row + "=" + (col * row)+"\t");
col ++;
}
row ++;
System.out.println();
}
//12. for 循环
for(i = 0;i<=10;i++){
System.out.println(i);
}
//13. 前n项和
int sum = 0;
for(i = 0;i<=100;i++){
sum = sum +i;
}
System.out.println(sum);
}
}
[思考]
负数的表现形式,为什么如此设计?
-128是在内存中是如何存储的?推算过程?
如果字节表示为11111111,则其真实数据是多少?
正负数是否都支持补码的方式?
正数是否是负数的减一取反?
空心三角形
倒三角空心
[定义函数]
add // +
subtract // -
multiple // *
divide // /
支持float,doule,long,int。//函数重载.