目录
idea项目管理
-
创建empty project(空项目)
-
新建模块(Module)
-
选择java–>next
-
取名(尽量不要是中文)
-
创建成功(Hello是后续创建的类)
-
点击Project Structure(file中也有)设置sdk
在project中设置,jdk版本和语言都为8
idea注释 样式修改
-
点击设置
-
选择“编辑”–>“颜色模板样式”–>“Java”
-
选择“注释Comments(Annotation是注解)” --> “行注释Line comment” --> 选择”加粗/斜体“ --> 选择颜色 -->点击”Inherit values from“锁定
块注释block comment /* */行注释line comment //
1. 注释、标识符、关键字、修饰符
注释
单行://balabala
多行:/* */
文档注释:/**
*
*
*/
百度:有趣的注释
/***
* _ooOoo_
* o8888888o
* 88" . "88
* (| -_- |)
* O\ = /O
* ____/`---'\____
* . ' \\| |// `.
* / \\||| : |||// \
* / _||||| -:- |||||- \
* | | \\\ - /// | |
* | \_| ''\---/'' | |
* \ .-\__ `-` ___/-. /
* ___`. .' /--.--\ `. . __
* ."" '< `.___\_<|>_/___.' >'"".
* | | : `- \`.;`\ _ /`;.`/ - ` : | |
* \ \ `-. \_ __\ /__ _/ .-` / /
* ======`-.____`-.___\_____/___.-`____.-'======
* `=---='
*
* .............................................
* 佛祖保佑 永无BUG
*/
/***
* _ooOoo_
* o8888888o
* 88" . "88
* (| -_- |)
* O\ = /O
* ___/`---'\____
* . ' \\| |// `.
* / \\||| : |||// \
* / _||||| -:- |||||- \
* | | \\\ - /// | |
* | \_| ''\---/'' | |
* \ .-\__ `-` ___/-. /
* ___`. .' /--.--\ `. . __
* ."" '< `.___\_<|>_/___.' >'"".
* | | : `- \`.;`\ _ /`;.`/ - ` : | |
* \ \ `-. \_ __\ /__ _/ .-` / /
* ======`-.____`-.___\_____/___.-`____.-'======
* `=---='
* .............................................
* 佛曰:bug泛滥,我已瘫痪!
*/
/***
* ┌─┐ ┌─┐ + +
* ┌──┘ ┴───────┘ ┴──┐++
* │ │
* │ ─── │++ + + +
* ███████───███████ │+
* │ │+
* │ ─┴─ │
* │ │
* └───┐ ┌───┘
* │ │
* │ │ + +
* │ │
* │ └──────────────┐
* │ │
* │ ├─┐
* │ ┌─┘
* │ │
* └─┐ ┐ ┌───────┬──┐ ┌──┘ + + + +
* │ ─┤ ─┤ │ ─┤ ─┤
* └──┴──┘ └──┴──┘ + + + +
* 神兽保佑
* 代码无BUG!
*/
/***
* http://www.flvcd.com/
* .--, .--,
* ( ( \.---./ ) )
* '.__/o o\__.'
* {= ^ =}
* > - <
* / \
* // \\
* //| . |\\
* "'\ /'"_.-~^`'-.
* \ _ /--' `
* ___)( )(___
* (((__) (__))) 高山仰止,景行行止.虽不能至,心向往之。
*/
/***
* .-~~~~~~~~~-._ _.-~~~~~~~~~-.
* __.' ~. .~ `.__
* .'// \./ \\`.
* .'// | \\`.
* .'// .-~"""""""~~~~-._ | _,-~~~~"""""""~-. \\`.
* .'//.-" `-. | .-' "-.\\`.
* .'//______.============-.. \ | / ..-============.______\\`.
* .'______________________________\|/______________________________`.
*
*/
标识符和关键字
-
关键字
-
标识符:只能由字母,数字,_(下划线) ,$ 组成
-
不能以数字开头
-
不能有非法字符
-
可以用汉字命名,但不提倡,最好也不要用中文拼音
-
命名规则
尽量见名知意
尽量见名知意
尽量见名知意
-
包名:全小写
包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词,最好用域名反过来写,不会冲突。如com.cnblogs.sun99bk.myutil等。
-
类名、接口名:每个单词的首字母大写 如:ClassName*(驼峰原则)*
-
变量名、方法名(参数名、对象名):第一个单词小写,后面单词的首字母大写,如:setName(), dbClassName。(第一个单词小写和驼峰原则)
-
常量名:所有字母都大写 如:MAX_COUNT*(大写字母和下划线)*
修饰符
同一个类 | 同一个包 | 不同包的子类 | 不同包的非子类 | |
---|---|---|---|---|
Private | √ | |||
Default | √ | √ | ||
Protected | √ | √ | √ | |
Public | √ | √ | √ | √ |
2. 数据类型
- 强类型语言–>java
- 先定义,后使用
- 安全性高
- 速度慢
- 弱类型语言–>vb,js
基本类型(Primitive type)
数值类型
-
整数类型
-
byte(占1个字节)范围:-128~127
- 字节整型
-
short(占2个字节)范围:-32768~32767
- 短整型
-
int(占4个字节)范围:-2147483648~2147483647
- 整型
-
long(占8个字节)范围:
-9223372036854775808~9223372036854775807
- 长整型
- 4000025L/787955l(数字后面加L)
-
-
浮点类型
- float占4个字节
- 单精度浮点型
- 123.123f/165.231F(数字后面加F)
- double占8个字节
- 双精度浮点型
- float占4个字节
-
字符类型
- char占2个字节
-
String是一个类,不是一个数据类型:可定义字符串
boolean类型:占1位,其值只有true和false两个
- boolean a=false;
- boolean a=true;
字节
1B=8bit(1字节=8位)
11001100是一个八位得二进制数
字符
字母、数字、字和符号
一些单位换算
1024B=1kb
1024kb=1M(兆)
1024M=1G
1024G=1TB
引用类型(reference type)
- 类
- 接口
- 数组
拓展
-
整数
-
二进制(0b开头)
-
十进制(平时使用的数字)
-
八进制(0开头)
-
十六进制 (0x开头)
都是以十进制数输出
-
public static void main(String[] args) {
int a=10;
int b=010;
int c=0x10;
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
//输出10 8 16
-
浮点数
public static void main(String[] args) { float a=0.1f; double b=1.0/10; System.out.println(a); System.out.println(b); System.out.println(a==b); } //输出0.1 0.1 false-->精度丢失,最终判断为不相等
//====================================================== //浮点数的拓展? 银行业务怎么表示? 钱 //BigDecimal 数学工具类 //====================================================== public static void main(String[] args) { float d1=1231564654489f; float d2=d1+1; //比较两个数是否相等,相等数出true,不相等输出false System.out.println(d1==d2);//发现输出了true } //float 有限、离散、舍入误差、大约、接近但不等于 //最好完全避免使用浮点数进行比较 //最好完全避免使用浮点数进行比较 //最好完全避免使用浮点数进行比较
-
字符
public static void main(String[] args) { char c1='a'; char c2='中'; System.out.println(c1); System.out.println((int)c1);//强制转换 System.out.println(c2); System.out.println((int)c2);//强制转换 } //编码 Unicode 表 占2字节 最多可表示65536(2^16)个字符 //所有字符的本质还是数字
Unicode 编码:
-
范围U0000~UFFFF
-
\u0061 (反斜杠\表示转义,把\后面的字符意思进行转化)
-
输出"a"
-
'a’的数值对应的为Unicode字符集中’a’字符的编码值
相当于 97 对应 u0061
-
在Java中 “\u0061” “a” “97” 三者是等价的
-
-
转义字符:
\t 制表符(相当于隔开一个Tab的长度)
\n 换行
public static void main(String[] args) { String a=new String("don't"); String b=new String("don't"); System.out.println(a==b);//输出false String c="don't"; String d="don't"; System.out.println(c==d);//输出true }
-
-
布尔值
public static void main(String[] args) { boolean a=true; if(a==true){} if(a){}//两句等效,默认判断括号里的内容为真 }
3. 类型转换
低 byte,short,char—>int—>long—>float—>double 高
强制转换:高—>低 使用方法:(类型)变量名
自动转换:低—>高
不能对布尔值进行转换(只占一位)
不能把对象类型转换为不相干的东西
在高容量转换到低容量的时候,强制转换
转换的时候可能存在内存溢出
public static void main(String[] args){ int a=128; System.out.println((byte)a);//内存溢出,输出-128 }
或精度异常(float、double转int,直接舍弃小数点后的数)
JDK7新特性:数字之间可以用下划线分割,且不会被输出。
public static void main(String[] args){
int money=10_0000_0000;//方便数0
System.out.println(money);//输出1000000000
System.out.println("====================================");
int a=10_0000_0000,b=20;
long c=a*b;
System.out.println(c); //数据溢出:-1474836480
//原因:*优先级大于=(赋值),所以先算a*b,输出一个int型的数字,但是由于200_0000_0000超出了int类型的范围,溢出,输出了一个负数,并且直接讲这个负数赋值给了long型的变量c。
//解决:先将某个变量强转,再计算,再赋值
//long c=((long)a)*b
}
4. 变量、常量
- 变量
-
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
-
不建议一行定义多个变量
-
作用域:
-
类变量
static修饰的变量
public class Demo1 { static double salary=2500;//不实例化可直接使用 public static void main(String[] args) { System.out.println(salary); } }
-
实例变量
从属于对象
再方法的外面,类的里面public class Demo1 { //不进行初始化,会输出默认值 // 0 0.0 //布尔值:默认false //除了基本类型,其余都是null String是null String name; char id; int age; public static void main(String[] args) { //变量类型 变量名= new Demo1(); Demo1 demo1 = new Demo1(); //快捷键:new Demo1() Alt+回车 再回车 System.out.println(demo1.name);//输出null System.out.println(demo1.id);//没有输出 //猜想:因为char是用来装一个字符,没有放东西进去,所以不输出任何东西? System.out.println(demo1.age);//输出0 //快捷键:demo1.age.sout } }
-
局部变量
定义在所有方法的{}里面
public class Demo1 { //main方法(主方法) public static void main(String[] args) { //局部变量:必须声明和初始化值 //不进行初始化不会自动赋值,会导致程序无法通过 int a=0; System.out.println(a); } //其他方法 public void add(){ System.out.println(a);//没有声明a不能输出 } }
-
-
-
常量(Constant)[全大写]
-
常量——特殊变量——初始化(initialize)之后不能再改变
- final 常量名=值;
- final double PI=3.14;
public class Demo1 { //修饰符,不存在先后顺序,再加个public或者private都是一样的 static final double PI=3.1415; //final static double PI=3.1415;//与上一行等价 public static void main(String[] args) { System.out.println(PI); } }
-
5. 运算符
Java语言支持如下运算符
-
算术运算符:+ ,-,*,/,%,++,–(自增自减为一元运算符)
short b=12; byte c=7; System.out.println((String)(b+c)); //这样移动鼠标可以查看b+c转换成了什么类型 //报错:cannot cast 'int' to 'java.lang.String' 所以b+c自动升级为了int
-
赋值运算符:=
-
关系运算符:>,<,>=,<=,==,!=,instanceof
-
逻辑运算符:&&,||,!(先判断前面的,如果符合判断条件就短路,后面的不执行)
-
位运算符:&,|,^,~,>>,<<,>>>(了解!!!)
//每一个位之间进行比较 A=0011 1100; B=0000 1101; &且 A&B 0000 1100 //两个都是1则1 否则0 |或 A|B 0011 1101//两个都是0则0 否则1 ^亦或 A^B 0011 0001//相同为0 不同为1 ~取反 ~A 1100 0011//1变0 0变1 0000 0000 0 0000 0001 1 0000 0010 2 0000 0011 3 0000 0100 4 0000 1000 8 0001 0000 16 把1整体往某个方向移动? 2*8=16 2*2*2*2 >>右移 /2 <<左移 *2 2<<3 2左移3位-->2 *2*2*2=16
-
偷懒:
-
条件运算符/三目运算:? :
int a=55; String type = a>60?"及格":"不及格" //判断a是否>60,是则输出“及格”,否则输出“不及格”
-
扩展赋值运算符:+=,–,*=,/=
a+=7;
a=a+7;
-
-
字符串连接符
输出的所有内容,只要有一个+的一边为String类型,那么其他的将会进行拼接,不会相加。但String必须在运算之前。
int a=10,b=5;
System.out.println(""+a+b);//输出105 “”后全拼接
System.out.println(a+b+"");//输出15 先算a+b 再拼接
运算符优先级
++、–、!》算术运算符》关系运算符》&&》||》?:》赋值运算符
—————》%、*、/、+、-》>、<、>=、<=、==、!=》—》—》—》%=、=、+=、-=、/=
(学C语言时整理,Java中未检测(本人))
6. 包机制、JavaDoc
包机制(包的本质就是文件夹)
package 包名;
- 一般利用公司域名倒置作为包名 如:com.baidu.www
- 包名全小写
- 为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。
- 使用import语句
- import 包名.*;
- //* 通配符 导入该包下所有的类
- //也可以.后指定类名,导入单个类
- 使用import语句
JavaDoc
- javadoc命令是用来生成自己api文档的
参数信息:
- @author 作者号
- @version 版本号
- @since 指明需要最早使用的jdk版本
- @param 参数名
- @return 返回值情况
- @throws 异常抛出情况
package com.tang;
/**
*
* @author TangYingYi
* @version 1.0
* @since 1.8
*/
public class Hello {
String name;
public static void main(String[] args) {
String name="汤颖仪";
System.out.println(name+":Hello World!");
byte num1=127;//整型
int num2=26666;//整型
short num=2000;//短整型
long a=127L;//长整型
char b='汤';//字符型
float c=856.1f;//浮点型
double d=984.12;//双精度浮点型
}
/**
*
* @param name
* @return
* @throws Exception
*/
public String test(String name) throws Exception{
return name;
}
}
生成javadoc文档
使用cmd
/*
在cmd中输入命令:
C:\Java\idea\code\JavaSE\基础语法\src\com\tang>
javadoc -encoding utf-8 -charset utf-8 Hello.java
encoding编码 utf-8 charset字符集编码 utf-8//统一字符集,不乱码
//javadoc 参数 需要生成文档的Java文件名
*/
使用idea