基于JavaSE的基础
环境配置
- 环境变量
java_home: D:\Java\jdk1.8.0_231
path %java_home%\bin; %java_home%\jre\bin
- 设置项目框架
- 设置包目录结构
idea 常用设置和快捷键
-
阿里巴巴开发手册 (规范代码)
-
设置注释
-
idea快捷键
psvm (生成主方法)
Sout (输出语句)
ctrl+D(复制当前行到下一行)
alt + Enter(生成错误信息)
Ctrl + Alt + v(自动补全变量名称)
Ctrl + Alt + f(自动补全属性名称)
ctrl+/(行注释)
ctrl+shift+/(块注释)
方法或类注释: 在一个方法或类的开头,输入/**,然后按回车,自动根据参数和返回值生成注释模板,我们在这个模板上面编写即可。
数值.for 或 fori (快速生成for循环) 数组名.for(快速生成for-each循环)
数据类型
八大基本数据类型
public class Demo1 {
public static void main(String[] args) {
//整数
int num1 = 10; //最常用
byte num2 = 20;
short num3 = 30;
long num4 = 30L;//long类型要在数字后加L,一定要大写 l很像1
//浮点数(小数)
float num5 = 43.1F; //float类型要在数字后加F
double num6 = 3.1415926;
//字符
char name = '彦';
//字符串 String不是关键字而是一个类
String myName = "syan";
//布尔值:是非
Boolean flag = true;
}
}
(进制、浮点数、字符、转义字符)扩展
**
public class Demo2 {
public static void main(String[] args) {
//进制 二进制 0b 十进制 八进制 0 十六进制 0x
int i = 10;
int i2 = 010; //八进制 0
int i3 = 0x10; //十六进制
System.out.println(i);//10
System.out.println(i2);//8
System.out.println(i3);//16
/*浮点数? 银行业务怎么表示?
*BigDecimal 数学工具类
* float 有限、离散、舍入误差、大约、接近但不等于
* double
* 最好完全不使用浮点数进行比较
*/
float f = 0.1f;
double d = 1.0/10;
System.out.println(f==d);
//字符
char c1 = 'a';
char c2 = '彦';
System.out.println((int)c2);//强制转换把字符变成数字
//所有的字符本质还是数字
//编码 Unicode 表(97=a 彦=24422)2字节 0-65536
//U0000 - UFFFF
char c3 = '\u0061';//uincode编码
System.out.println(c3);
//转义字符
// \t 制表符
// \n 换行....
System.out.println("hello\tworld\nsyan!");
//布尔值扩展
boolean flag = true;
if (flag==true){}
if (flag);
//less is more 代码要精简易读
}
}
类型转换
低-------------------------------------------------------->高 (在内存中的容量高低)
byte,short ,char–>int–>long–>float–>double
public class demo3 {
public static void main(String[] args) {
int i = 128;
//强制类型转换 (类型)变量名 高--低
byte b = (byte)i;//byte最大值127 内存溢出
//自动转换 低--高
double c = i;
System.out.println(c);//128.0
System.out.println(b);//-128
System.out.println(i);//128
/*
注意点:1.不能对布尔值转换
2.不能把对象类型转换成不相干的类型
3.在把高容量转换到低容量的时候需要强制转换
4.转换的时候可能存在内存溢出,或者精度问题
*/
System.out.println((int)23.7);//23
System.out.println((int)-45.89f);//-45
char d = 'a';
int e = d+1;//自动转换
System.out.println(e);//98
System.out.println((char)e);//b
}
}
类型转换注意点:
public class Demo4 {
public static void main(String[] args) {
//操作数比较大的时候,注意溢出问题
//jdk7新特性,数字键可以用下划线分割
int money = 10_0000_0000;//long类型数字后一定用大写L表示
int years = 20;
int total = money*years;
System.out.println(total);//-1474836480,计算的时候溢出了
long total2 = money*years;//俩乘数是int,转换之前已经存在问题了
long total3 = money*((long)years);//先把其中一个转换
}
}
变量、常量
每个变量单行声明赋值
public class Demo5 {
//类变量 static可以在整个类中直接使用
static double salary = 2500;//2500默认是int自动转化为double
//属性:变量
//实列变量:从属于对象(类)如果不自行初始化有默认值,需要new类来使用
// 0 0.0 null 布尔值:默认false
//除了基本类型其余的默认值都是null
String name;
int age;
//main方法
public static void main(String[] args) {
//局部变量:只在块里有用,必须声明和初始化值
int i = 10;
//实例变量
//变量类型 变量名字 = new Demo5();拿到对象
Demo5 demo5 = new Demo5();
System.out.println(demo5.age);
//类变量
System.out.println(salary);//2500.0
}
//其他方法
public void add(){
}
}
常量
常量(Constant):初始化(Initilize)后在程序运行过程中不可以再改变值
常量名一般是用大写字符命名
final 常量名=值;
public class Demo6 {
//static、final 都是修饰符不用区分先后顺序
static final double PI = 3.14;
final static double M = 18.0;
public static void main(String[] args) {
System.out.println(PI);
System.out.println(M);
}
}
变量命名规范
类成员变量:首字母小写后面单词首字母大写(驼峰原则):monthSalary
局部变量: 首字母小写后面单词首字母大写(驼峰原则
常量: 大写字母和下划线 :MAX_VALUE
类名: 每个单词的首字母大写:Man,GoodMan
方法名: 首字母小写后面单词首字母大写(驼峰原则):run(), newRun()
运算符
(多使用(),括号的优先级是最高的)
算术运算符:+,-,,/,%(模运算取余),++,–
赋值运算符:=
关系运算符:>,<,>=,<=,==,!=,instanceof
逻辑运算符:&&(与),||(或),!
位运算符:&,|,^,~,>>,<<,>>>
条件运算符: ?:
扩展赋值运算符:+=,-=,=,/=
- 二元运算符
package operator;
//除法运算注意点
public class Demo01 {
public static void main(String[] args) {
//二元运算
int a = 10;
int b = 20;
System.out.println(a/b);//0,都是int型0.5只保留整数部分
System.out.println(a/(double)b);//0.5
}
}
package operator;
public class Demo02 {
public static void main(String[] args) {
long a = 122344522221123L;
int b = 128;
short c = 12;
byte d = 8;
//运算中有long类型结果为long类型,其它为int型
System.out.println(a+b+c+d);//122344522221271,long类型
System.out.println(b+c+d);//148,int型
//short+byte也为int型
System.out.println(c+d);//20,int型
}
}
- 一元运算符
package operator;
public class Demo3 {
public static void main(String[] args) {
//++ -- 自增自减运算
int a = 1;
int b = a++;//先把a的值赋给b,然后a的值加一再执行下一行代码
int c = ++a;//先把a的值加一,再把a的值赋给c
System.out.println(a);//3
System.out.println(b);//1
System.out.println(c);//3
//幂运算 Java中没有2^3 很多运算有时需要借助工具类
double pow = Math.pow(2,3);
System.out.println(pow);//8.0
}
}
- && || !
与运算执行时会先判断第一个条件是否为true,若为false则不会执行后面的条件,直接执行下一条语句
- 位运算 &,|,^,~,>>,<< 效率极高
A = 0011 1100
B = 0000 1101
A&B = 0000 1100 //与运算
A|B = 0011 1101 //或运算
A^B = 0011 0001 //异或运算(俩数不同则结果为1,相同为0)
~B = 1111 0010 //非运算
/*面试题 怎样操作最快得到 2*8 的结果
<<(左移) 相当于 *2
0000 0000 0
0000 0001 1
0000 0010 2 !
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16 !
>>(右移) 相当于 /2
*/
2<<3 = 16
- 字符串连接符 +
package operator;
public class Demo04 {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 30;
//只要遇到String类型后面就都转化为string字符串,没遇到前正常加法运算
System.out.println(a+b+""+c);//3030
System.out.println(""+a+"hello"+b+"");//10hello20
}
}
- 三元运算符
package operator;
public class Demo5 {
public static void main(String[] args) {
//三元运算符 a ? b :c
//如果a==true 结果为b,否则结果为c
int s = 80;
String type = s<80 ?"不及格":"及格";
System.out.println(type);//及格
}
}
包机制
包就相当于文件夹
一般使用公司域名的倒置作为包名 www.baidu.com => com.baidu.www
为了能够使用某一个包的成员,我们需要在java程序中导入该包。使用“import”语句可完成此功能
package com.syan.operator;//package必须放在最上面,import放在它下面
import java.util.Date;
import java.util.*; //.*是通配符的意思会导入这个包下的所有东西
Java doc
javadoc命令是用来生成自己的API文档的
javadoc 参数 java文件
package com.syan.base;
/**
* -----文档注释-----
* @author syan
* @version 1.0
* @since 1.8 自然号
*/
public class Doc {
String name;
/**
* @param name
* @return
* @throws Exception
*/
public String test(String name) throws Exception{
return name;
}
}
- 用命令行生成doc
- 在idea中生成
①在工具栏中找到 tool >> Generate JAVADoc…
②配置参数
参数说明:
- Whole project>>整个项目都生成
- Custom scope>>自定义范围,如下:project files 项目文件,project production files 项目产品文件,project test files 项目的测试文件, 未知范围,class hierarchy 类层
- include test source 包含测试目录
- include JDK and … 包含jdk和其他的第三方jar
- link to JDK documentation…链接到JDK api
- output directy 生成的文档存放的位置
- private、package、protected、public 生成文档的级别(类和方法)
- 右边的Generate…是选择生成的文档包含的内容,层级树、导航、索引…
- 再右边是生成的文档包含的内容信息,作者版本等信息
- Locale 语言类型,zh-CN
- Other command line arguments 其他参数 -encoding utf-8 -charset utf-8
- Maximum heep… 最大堆栈