java基础
Java的特性优势
- 简单性
- 面向对象
- 可移植性
- 高性能
- 分布式
- 动态性 【反射机制】
- 多线程
- 安全性 【异常机制】
- 健壮性
java三大版本
- write once 、run anywhere
- javaSE:标准版 【桌面程序、控制台开发....】
- javaME:嵌入式开发【手机,小家电....】 用的人很少了
- javaEE:E企业级开发【web端,服务器开发.....】
JDK JRE JVM
JVM ---》 JRE ---》 JVM
java程序运行机制
-
编译型: 把程序全部翻译成计算机可以执行的语言 compile 编译器
-
解释性: 边执行边解释
-
程序运行机制:
-
源程序(.java)---》 java编译器---》字节码(.class) ---》
类装载器---》字节码检验器---》解释器----》操作系统平台
-
标识符
- java标识符大小写敏感;
- java标识符只能以字母 $ _ 开头
数据类型
-
强类型语言
要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
-
弱类型语言
浮点数
float f = 0.1f;
double d = 1/10;
System.out.println(f==d);//fasle
float d1 = 23232323231f;
float d2 = d1+1;
System.out.println(d1==d2);//true
- float 有限 离散 舍入误差 大约 接近但不等于
- double
- 最好完全避免使用浮点数进行比较
- BigDecimal 类 数学用具类 大数据类 【用这个】
字符
char c1 ='a';
char c2 = '中';
System.out.println(c1);// a
System.out.println((int)c1);// 97 强制类型转换
//所有的字符本质还是数字
//编码 Unicode 有表:(97 = a 65 =A) 2字节 0 - 65526
// U0000 UFFFF
char c3 = '\u0061'
System.out.println(c3);// a
//转义字符
// \t 制表符
// \n 换行符
System.out.println("Hello\tworld");
System.out.println("Hello\nworld");
//看一个e.g.
String sa = new String("hello world");
String sb = new String("hello world");
System.out.println(sa==sb);//false
String sc = "hello world";
String sd = "hello world";
System.out.println(sc==sd);//true
类型转换
-
由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换
低 ---------------------到----------------------高
byte , short , char ---> int ---->long ---->float ---->double
-
强制类型转换 高 赋值 到 低 [会有内存溢出 和 精度 问题]
-
自定类型转换 低 赋值 到 高
int i = 128;
byte b = (int) i;//内存溢出 -128
double d = i;
//操作比较大的输的时候。注意溢出问题
int money = 10_0000_0000;//JDK7 新特性 数字之间可以用下划线分割
int years = 20;
int total = money * years; // -147483648,计算的时候溢出了
long total2 = money * years;//默认是int 转换之前还是int 就有问题了
long total3 = money * ((long)years);//先把一个数转化为long √
变量
变量作用域
- 类变量 必须有static
- 实例变量
- 局部变量
常量
- 用final来定义 一般名大写
运算符
- 算术运算符 : + - * / % ++ --
int e = 3;
int f = e++; //执行这行代码,先给f赋值,在自增
System.out.println(e);//4
int g = ++e;//执行这行代码,先自增,后给g赋值
int h = e++;//先赋值,在自增
System.out.println(e);//6
System.out.println(f);//3
System.out.println(g);//5
System.out.println(h);//5
// 字符串连接符 +
int a = 10;
int b = 20;
System.out.println(""+a+b);//1020
System.out.println(a+b+"");//30
- 赋值运算符 : =
- 关系运算符 : > < >= <= == != instanceof
- 逻辑运算符 : && || ! 与或非
[注:] &&: 有0 返回 || : 有 1 返回 --------- 短路机制
- 位运算符 : & | ^ ~ >> << >>>(了解)
System.out.println(2<<4);//<<左移乘2 >>右移除2
- 条件运算符 : ? :
- 扩展赋值运算符: += -= *= /=
JavaDos
/**
* @author shuang 作者
* @version 1.0 版本号
* @since 1.8 指明需要最早使用的JDK版本
* @param in 参数名
* @return 返回值情况
* @throws 异常抛出情况
*/
public String test(String in){
return in;
}
>javadoc -encoding utf-8 -charset utf-8 Doc.java
1、在cmd中运行上面命令会生成在线文档 点击index.html 可查看
2、也可以用IDEA生成javaDoc文档
Java流程控制
Scanner对象
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("第一次输入数据:");//hei baby
// nextLine输出回车之前的数据 以回车分割
String str = scanner.nextLine();
System.out.println(str);//hei baby
System.out.println("第二次输入数据:");//hello world
// next输出空格之前的数据 以空格分割
str = scanner.next();
System.out.println(str);//hello
scanner.close();
}
示例:
public static void main(String[] args) {
//输入多个数字 求总和 平均值 每输入一个数字回车,通过非法数字来结束输入输出执行结果
Scanner scanner = new Scanner(System.in);
double sum = 0;
int m = 0;
System.out.println("请输出数据:");
while (scanner.hasNextDouble()){
double x = scanner.nextDouble();
m++;
sum+=x;
System.out.println("输入了第【"+m+"】个数据 当前总和为:"+sum);
}
System.out.println(m+"个数总和:"+sum);
System.out.println(m+"个数平均值:"+(sum/m));
scanner.close();
}
结果:
请输出数据:
36
输入了第【1】个数据 当前总和为:36.0
42
输入了第【2】个数据 当前总和为:78.0
7.6
输入了第【3】个数据 当前总和为:85.6
a
3个数总和:85.6
3个数平均值:28.53333333333333
顺序结构
- def:语句与语句之间是按从上到下的顺序进行的,它是由若干依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构。
选择结构
- if单选择结构
if(布尔表达式){
// 布尔表达式为true
}
- if双选择结构
if(布尔表达式){
// 布尔表达式为true
}else{
// 布尔表达式为false
}
- if多选择结构
if(布尔表达式1){
// 布尔表达式1为true
}else if(布尔表达式2){
// 布尔表达式2为true
}else if(布尔表达式3){
// 布尔表达式3为true
}else if(布尔表达式4){
// 布尔表达式4为true
}else{
// 以上布尔表达式都不为true 执行代码
}
示例:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入成绩:");
int score = scanner.nextInt();
if (score == 100){
System.out.println("恭喜~~满分~~");
}else if (score >= 90 && score < 100){
System.out.println("A级");
}else if (score >= 80 && score < 90){
System.out.println("B级");
}else if (score >= 70 && score < 80){
System.out.println("C级");
}else if (score >= 60 && score < 70){
System.out.println("D级");
}else if (score >= 0 && score < 60){
System.out.println("不及格");
}else {
System.out.println("成绩不合法!!!");
}
scanner.close();
}
结果:
请输入成绩:
100
恭喜~~满分~~
- switch多选择结构
switch(expression){
case value:
//语句
break;//可选
case value:
//语句
break;//可选
case value:
//语句
break;//可选
default://可选
//语句
}
//注: case标签 必须为 字符串常量或字面量
//了解一下反编译 java ---- 字节码 ---- 反编译(IDEA) --- java
反编译(IDEA)示例
查看工程结构 projectStructure --- project ---project compiler output
可以找到.class文件 --- 右键任意文件 --- show in explorer(打开目录) ---
把.class文件拷贝到此目录下 --- IDEA把字节码反编译为java
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package struct;
public class Demo03 {
public Demo03() {
}
public static void main(String[] args) {
char grade = 108;
switch(grade) {
case 65:
System.out.println("优秀");
break;
case 66:
System.out.println("良好");
break;
case 67:
System.out.println("及格");
break;
case 68:
System.out.println("很差");
break;
case 69:
System.out.println("挂科");
break;
default:
System.out.println("未知等级!");
}
}
}
循环结构
- while循环
while(布尔表达式){
//布尔表达式true
}
//注:大多数情况会让循环停止下来,需要让表达式失效方式来结束循环;
示例:
public static void main(String[] args) {
// 1-100 求和
int i = 0;
int sum = 0;
while (i<100){
i++;
sum = sum + i;
}
System.out.println(sum);//5050
}
- do while 循环
do whlile 和 while 相似,不同的是 do while 循环至少执行一次
do{
//代码语句
}while(布尔表达式)
IDEA快捷键
- ctrl + D 复制当前行到下一行