Java:服务器端开发 B/S
HelloWorld程序
/*
一个文件名中最多只能有一个public修饰的类
可以有多个类
public修饰的这个类,名字必须和文件名相同
*/
//public:修饰词——修饰的是class
//class:类——文件
public class HelloWorld
{
//程序入口——主方法main——固定写法
public static void main(String[] args)
{
//要执行的代码第一行
//打印一句话
System.out.println("HelloWorld!");
}
}
运行Java时提示,不是内部或外部课执行命令
- 进入到工具所在目录
- 修改环境变量
例:
path:%JAVA_HOME%\bin
新建变量:JAVA_HOME
Java变量
- 命名规则
1、只能出现:英文+数字+_+$
2、不能出现数字开头
3、变量名:可读性好、首字母小写,第二个单词开始首字母大写 - 变量使用
1、声明\定义 – 类型 变量名
2、初始化 – 第一次赋值
//声明:类型+变量名
int age;
//初始化:第一次赋值
age = 10;
age = 20;
//声明的同时初始化
int year = 2020;
//变量不能重复声明
//int age;
int a,b = 1,c;
- 类型
2种数据类型:基本数据类型+引用类型
基本数据类型:8种
整型:byte、short、int、long
浮点型:float、double
字符型:char
布尔:boolean
byte
1个字节 = 8位
范围:-128~127
byte b;
b = 127;
System.out.println("b: " + b);
short
2个字节 = 16位
范围:-2^15 ~ 2^15-1
short s = 128;
System.out.println("s: " + s);
int
4个字节 = 32位
范围:-2^31 ~ 2^31-1
int i = 2100000000;
//整数的直接量、字面量默认类型都是int
System.out.println("i: " + i);
long
8个字节 = 64位
-2^63 ~ 2^63-1
(通常用来表示时间)
//想要表示long类型,需要追加 l\L
long l = 21000000000l;
System.out.println("l: " + l);
//获得当前系统时间 —— 毫秒
long time = System.currentTimeMillis();
System.out.println("现在时间: " + time);
//long = 0; 1970年1月1日 00:00:00
char
2个字节 = 16位
范围:0 ~ 2^16-1=65535
char c = 'a';
System.out.println(c);
c = '中';
c = '\u4e2d'; // Unicode编码 - 1个字符=2个字节 乱码
System.out.println(c);
char c1 = 48; //ASCII码 'A' = 97 'a' = 65 '48' = 0;
System.out.println(c1);
c1 = 0; // 空白字符
System.out.println(c1);
float(32位)
// float f = 3.14; // 编译错误
// 小数字面量默认都是double类型
// 如果要给float赋值,需要追加 f\F
float f = 3.14f;
System.out.println(f);
double(64位)
//只有0.5是精确值,其他都会精度缺失
double d = 5.0 - 4.9;
System.out.println(d);
//0.09999999999999964
客观存在:精度缺失问题,不能判断两个浮点数是否相等
boolean
true\false
boolean b = true;
自动类型转换
byte -> short/char -> int -> long -> float -> double
运算符
算数运算符
++ i — 先运算,再使用
i ++ —先使用,再运算
//int i = 1 + 3.14; // 编译错误
double d = 1 + 3.14;
System.out.println(d); // 4.140000000000001
int i = 5 / 2;
System.out.println(i); // 2
double d1 = 5 / 2;
System.out.println(d1); // 2.0
double d2 = 5.0 / 2;
System.out.println(d2); // 2.5
System.out.println("------");
System.out.println(i++); // 2 先使用 在运算
System.out.println(i); // 3
System.out.println(++i); // 4 先运算 再使用
赋值运算符
= += -= *= /=
byte b = 10;
//b = b + 1; // 编译错误
//b++;
b += 1; // 不会改变类型
System.out.println(b);
比较运算符
结果:boolean类型
位运算符
& | ^
byte b1 = 2 ^ 4; // 异或运算:相同是0,不同是1
System.out.println(b1);
逻辑运算符
&& & || |
&& 比 &(|| 比 |) 多了一个“短路”
短路:通过第一个表达式已经能确定整个结果,第二个表达式就跳过了
int a = 10;
int b = 20;
System.out.println(a++ < 10 & b++ > 20); // false
System.out.println(a); // 11
System.out.println(b); // &&:20 &:21
//&& 比 & 多了一个“短路”
位移运算符
byte b = -4;
System.out.println(b >> 1); // -2 右移1位等同于除2
System.out.println(b << 1); // -8 左移1位等同于乘2
System.out.println(b >>> 1); // 无符号右移 补0
三目运算符
表达式1[boolean值] ? 值1 : 值2
可以用来做判断
int a = 11;
double b = a <=10 ? 3.14:2;
System.out.println(b); // 2.0
//true:值1 false:值2