- Java基础
- Java帝国的诞生
- Java发展
- JAVA特性和优势
- JAVA三大版本
- JDK JRE JVM
- Hello Wolrd
- Java环境运行机制
- Java基本语法
- 创建 `IntelliJ IDEA` 项目
- 编写代码,运行环境
- 注释
- 单行注释
- 多行注释 (快捷键:`选中+Ctrl+/` 注释取消:`选中+Ctrl+/`)
- 文档注释 (快捷键:`
文档注释 (快捷键:
//有趣的代码注释
标识符与关键字
标识符注意点
Java 所有的组成部分都需要名字。类名,变量名以及方法名都被称为标识符- 所有的标识符,都应该以字母(A-Z或者a-z) 美元符($)或者下划线()开始
- 首字母之后 可以可以是字母,(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何字符组合
- 不能使用关键字作为变量名或方法名。
- 标识符是大小写敏感的
- 合法标识符举例:age、$salary、_value_、__1_value
- 非法标识符举例:123abc、-salary、#abc
- 可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音,很Low。
- 要求变量的使用要 严格符合规定,所有变量都必须 先定义 后才能使用。 因此安全性高,但是速度慢。
- 要求变量的使用符合规定即可,所有变量都必须先定义后才能使用。 因此安全性高,但是速度慢。
public static void main(){ String a = "hello"; //必须按数字类型定义 int num = 10; System.out.println(a); System.out.println(num); }Java的数据类型,分为两大类- 基本类型:(primitive type)
- 引用类型:(refreence type)
public class Demo2{ //八大基本数据类型 快捷键查看类:command或ctrl + 点击 //整数 int num1 = 10; //最常用 byte num2 = 20; short num3 = 30; long num4 = 30L; //long类型要在最后加L //浮点数 (小数) float num5 = 50.1F; //float类型要在数字最后加F double num6 = 3.1415926; //字符类型 char name = '中'; //字符串,String不是关键字,是类 //String name = "hello" //boolean 布尔值:是,非 boolean flag = true; boolean flag2 = false; }字节-
位(bit):是计算机内部数据储存的最小单位 ,11001100是一个 八位 二进制数
-
字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示,
-
1B(byte,字节) = 8bit(位)
-
字符:是指计算机中使用的字母,数字,字和符号(例:'a','A','中','国')
-
1bit 表示1位
-
1byte表示一个字节 1B = 8b
-
1024B = 1KB
-
1024KB = 1MB
-
1024MB = 1GB
-
1024GB = 1TB
public class Demo2 { public static void main(String[] args){ //数据拓展 进制 二进制:0b开头 十进制 八进制:0开头 十六进制:0x开头 int i = 10; int i2 = 010; // 八进制:0开头 逢8进1 int i3 = 0x10; // 十六进制:0x开头 逢16进1 0~9 A~F System.out.println(i); System.out.println(i2); System.out.println(i3); System.out.println("==================================="); //========================================== //浮点数拓展 央行业务怎么表示 float f = 0.1f; //0.1 double d = 1.0/10; //0.1 System.out.println(f); System.out.println(d); System.out.println(f==d); float f1 = 212121212F; float f2 = f1 + 1; System.out.println(f1 == f2 ); //结果为:true 相同 //原因:浮点数 float:是有限离散的,有舍入误差,其结果是个大约数,接近但是不等于 //最好完全避免使用浮点数比较大小! //最好完全避免使用浮点数比较大小! //最好完全避免使用浮点数比较大小! //使用BigDecimal数学工具类进行银行业务 System.out.println("==================================="); //====================================== //字符拓展 char c1 = 'a'; char c2 = '中'; System.out.println(c1); System.out.println((int)c1); //强制转换 System.out.println(c2); System.out.println((int)c2); //强制转换 //所有的字符本质上还是数字 //编码 Unicode ASCII码:a = 97,A = 65,占2字节 最多表示0~65536个字符 最早的Excel表格只有2的16次方,65536 char c3 = 'u0061'; //定义一个Unicode编码 System.out.println(c3); //a System.out.println("==================================="); //转义字符 // t 制表符 tab空格 // n 换行符 //...... System.out.println("HellonWorld"); System.out.println("==================================="); //对象 从内存分析 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 System.out.println("==================================="); //布尔值扩展 boolean flag = true; //代码要精简易读 Less is More! if(flag == true){};//新手 if (flag){};//老手 } }类型转换- 由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。
低 -----------------------------------------> 高 (小数优先级大于整数) byte,short,char -> int -> long -> float -> double
- 运算中,不同类型的数据转化为同一类型,然后进行运算。
- 强制类型转换
- 自动类型转换
public class Demo3 { public static void main(String[] args){ int i = 128; //强制转换 (类型)变量名 高 -> 低 byte b = (byte)i; //内存溢出 System.out.println(i); // 128 System.out.println(b); //-128 //自动转换 低 -> 高 double d = i } }byte范围是:-128~127
public class Demo3 { public static void main(String[] args){ int i = 128; //强制转换 (类型)变量名 高 -> 低 byte b = (byte)i; //内存溢出 System.out.println(i);//128 System.out.println(b);//-128 //自动转换 低 -> 高 double d = i; System.out.println(i);//128 System.out.println(d);//128.0 System.out.println("========================="); //精度问题 System.out.println("23.7强制转换int类型:"+(int)23.7);//23 System.out.println("-45.98f强制转换int类型:"+(int)-45.89f);//-45 System.out.println("========================="); char c = 'a'; int e = c+1; //低到高,自动转换 System.out.println(e); //98 System.out.println((char)e);// 转换回char类型,高到低,强制转换 //b System.out.println("========================="); //操作比较大的数的时候,注意溢出问题 //JDK7 新特性,数字之间可以使用下划线分割 int money = 10_0000_0000; // 不会输出下划线 _ System.out.println(money);//1000000000 int years = 20; int total = money*years; //计算的时候溢出了 System.out.println(total); //-1474836480 double total2 = money*years; //默认是int类型,转换之前已经出现问题了,因此就是把结果转换成long System.out.println(total2); long total3 = money*((long)years);//先把一个数转换成long System.out.println(total3); //因为long L 和 l 都可以 但是l容易看成1,所以建议都使用L } }变量- 变量是什么:就是可以变化的量!(代表一个空间,空间里面存储的值是可以变化的。)
- Java是一种强类型语言,每个变量都必须声明其类型。
- Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
type varName [=value] [{,varName[=value]}]; // 数据类型 变量名 = 值; //可以使用逗号隔开来声明多个同类型变量(不建议用)。- 注意事项:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
- 变量名必须是合法的标识符。
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束。
public class Demo4 { public static void main(String[] args){ //int a,b,c; //不建议 //程序的 可读性 int a = 1; int b = 2; int c = 3; String name = "name"; char x = 'X'; double p1 = 3.14; } }变量作用域- 类变量
- 实例变量
- 局部变量
public class Demo5 { // 常量 //public private final static 修饰符 不存在先后顺序 static final double PI = 3.14; final static double PI2 = 3.14; //属性:变量 // 类变量 static 与类一起出现,一起消失! static double salary = 2500; //实例变量:从属于对象,在方法外面定义 //如果不自行初始化,这个类型的默认值:0,0.0, null(u0000) // 布尔值 boolean默认:false // 除了基本类型,其余的默认值都是null String str ; //实例变量 int age; static int allClicks = 0; // 类变量 static 静态的 //main方法:主程序方法 public static void main(String[] args){ //常量 System.out.println(PI); System.out.println(PI2); //局部变量 是在方法里:{}里 :必须声明和初始化值 int i = 10; //使用实例变量:变量名字 == new Demo5(); //变量类型 Demo5 Demo5 demo5 = new Demo5(); //建立对象 System.out.println(demo5.age); //没有默认初始值,初始值为0 System.out.println(demo5.str); //没有默认初始值,默认值 null //类变量 static System.out.println(salary);//可以直接输出 } //其他方法 public void method(){ int i = 0; //局部变量 } }常量- 常量(Constant):初始化(initialize)后不能再改变值!不会变动的值。
- 所有常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。
- 常量名一般使用大写字符!
- 所有变量:方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则:monthSalary (除了第一个单词,后面的单词首字母大写 lastName)
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:Man,GoodMan
- 方法名:首字母小写和驼峰原则:run(),runRun()
- Java 语言支持如下运算符:
- 算术运算符:+、-、*、/、%(取余)、++、--
- 赋值运算符:=
- 关系运算符:>、<、>=、<=、==(等于)、!=(不等于)、instanceof
- 逻辑运算符:&&(与)、||(或)、!(非)
- 位运算符:&、|、^、~、>>、<<、>>>(了解即可)
- 条件运算符:?、:
- 扩展赋值运算符:+=、-=、*=、/=
package operator; public class Demo1 { public static void main(String[] args){ //二元运算符 // Ctrl + D 复制当前行到下一行 int a = 10; int b = 20; int c = 25; int d = 25; System.out.println(a+b); System.out.println(a-b); System.out.println(a*b); System.out.println(a/b);// 0.5 不是int类型 四舍五入 需要强转 a/(double)b System.out.println("====================="); long l1 = 1212121212; int i = 123; short s = 10; byte dd = 8; System.out.println(l1+i+s+dd); //long 只要存在long类型,结果也为long类型 System.out.println(i+s+dd); //int 没有long类型,结果都为int System.out.println(s+dd);// int System.out.println((double)s+dd);//double 类型 只要存在double类型,结果也为double类型 System.out.println("====================="); //关系运算符的结果:布尔值 正确 错误 //多和if 一起用 int a1 = 10; int a2 = 20; System.out.println(a>b);//false System.out.println(apackage operator; public class Demo2 { public static void main(String[] args){ // 与(and) 或(or) 非(取反) boolean a = true; boolean b = false; System.out.println("a && b ="+(a && b)); //逻辑与运算:两个变量都为真,结果才为真true System.out.println("a || b ="+(a || b)); //逻辑或运算:两个变量有一个为真,结果为真true System.out.println("!(a && b) ="+(!(a && b)));//逻辑非运算:如果是真即为假,如果为假即为真 //短路运算 int c = 5; boolean d = (c < 4)&&(c++<4); System.out.println(d); System.out.println(c);// 5 因为(c < 4)&&(c++<4)中(c < 4)已经为false,因此不会再计算(c++<4) c依旧为5 //位运算 System.out.println("===================="); System.out.println(2<<3); System.out.println("===================="); // int x = 10; int y = 20; x+= y; //x = x+y System.out.println(x); x = 10; y = 20; x-= y; //x = x-y System.out.println(x); System.out.println("===================="); x = 10; y = 20; //字符串链接符 + System.out.println("——"+ x + y);// ——1020 只要+两侧有一侧是String类型, System.out.println(x + y +"——");// 30—— 如果先+是数,则先计算后String拼接 System.out.println("===================="); //三元运算符 ? : // x ? y : z //如果x==true,则结果为y,否则结果为z int score = 80; String type1 = score < 60 ? "不及格": "及格"; System.out.println(type1);//及格 score = 50; String type2 = score < 60 ? "不及格": "及格"; System.out.println(type2);//不及格 } }运算符优先级 包机制 (文件夹)- 为了更好的组织类,Java提供了包机制,用于区别类名的命名空间。
- 包语句的语法格式为:
package pkg1[.pkg2[.pkg3...]]; - 一般利用公司域名倒置作为包名 :com.test.blog.www
- 为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用import语句可完成此功能
import package1[.package2...].(classname|*);
改变一下以上项目的存储方式:
// 定义包:写在所有代码的最前面 // 查看包:command/Ctrl + 点击 package com.learn.base; package com.learn.operator; //导入包 //自动生成包,快捷键macOS:option+shift+Enter Windows: Alt+Enter import com.learn.base.Demo1 //必须在package...下面 import com.learn.* //.*通配符,导入包下所有的类
JavaDocJava官方文档
Jdk8官方文档
- Javadoc命令是用来生成自己的API文档的
- 参数信息:
- @author 作者名
- @version 版本号
- @since 指明需要最早使用的jdk版本
- @param 参数名
- @return 返回值情况
- @throws 一场抛出情况
先写好自己的注释
package com.learn.base; public class doc { String name; public String test(String name) throws Exception{ return name; } //通过命令行生成文档: javadoc 参数 java文件 }自动生成文档:
可以在要生成文档的的文件夹下打开命令行:(在当前doc文件下)# encoding 编码 chartset 字符集编码 可显示中文 javadoc -encoding UTF-8 -charset UTF-8 doc.java
cmd代码:
来源:狂神说
代码运行后会生成很多文件:关注index.html
文档内容:
狂神说



