Java:服务器端开发 B/S

HelloWorld程序

/*
  一个文件名中最多只能有一个public修饰的类
  可以有多个类
  public修饰的这个类,名字必须和文件名相同
*/
//public:修饰词——修饰的是class
//class:类——文件
public class HelloWorld
{
   //程序入口——主方法main——固定写法
   public static void main(String[] args)
   {
      //要执行的代码第一行
      //打印一句话
      System.out.println("HelloWorld!");
   }
}

运行Java时提示,不是内部或外部课执行命令

  1. 进入到工具所在目录
  2. 修改环境变量
    例:
    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