开始使用IDEA
创建java工程,两种方法
-
直接创建java工程 然后一路next,只需要修改工程名和路径即可 ? ? -
先新创建一个空项目,一路next后再选择Moudle创建java模块,如图 ? 然后进行项目结构的配置,将图中两个位置进行设置 ?然后按照正常步骤即可
-
常使用的快捷键
-
快速复制一行ctrl+d -
快速删除一行ctrl+y
java的基础语法
1.注释
? ? ? ?//三种注释的格式//
?
? ? ? ?//1.单行注释//
? ? ? ?/* 2.多行注释
? ? ? 多行注释
? ? ? 多行注释
? ? ? 多行注释*/
? ? ? ?/** 3.文档注释*/
2.常接触到的关键字
?
注意:
-
java起名字不能用关键字起名 -
标识符(类名、变量名、方法名统称为标识符)开头应该以字母或者$以及_开始(可以用中文,但不建议) -
首字符后可以接字母、数字以及上面两个符号 -
表示符对大小写敏感,避免用标识符与关键字重名
3.数据类型
分两类:基本类型和引用类型
-
基本类型
public class Demo01 {
? ?public static void main(String[] args) {
? ? ? ?//八大基本数据类型
?
? ? ? ?//1.整数类型
? ? ? ?int num1=50000;//最常用的
? ? ? ?byte num2=50;//范围最小
? ? ? ?short num3=5000;
? ? ? ?long num4=58888888888888L;//Long后面要跟l方便区分,范围最大
?
? ? ? ?//2.浮点数(小数)
? ? ? ?float num5=5.2f;//float后面要加f方便区分
? ? ? ?double num6=3.1415926535;//常用
?
? ? ? ?//3.字符
? ? ? ?char num7='a';
? ? ? ?//注意字符串String不是数据类型,它是一个类
?
?
? ? ? ?//4.布尔值:只有两个值true和false
? ? ? ?boolean num8=true;
?
? ? ? ?//整数拓展: 进制 二进制0b 十进制 八进制0 十六进制0x
? ? ? ?int i1=0b10;
? ? ? ?int i2=10;
? ? ? ?int i3=010;
? ? ? ?int i4=0x10;
? ? ? ?System.out.println(i1);
? ? ? ?System.out.println(i2);
? ? ? ?System.out.println(i3);
? ? ? ?System.out.println(i4);
? ? ? ?System.out.println("=====================================================================");
? ? ? ?//输出后结果均为十进制
?
? ? ? ?//浮点数拓展:避免使用浮点数进行比较
? ? ? ?float i5=0.1f;
? ? ? ?float i6=1/10;
? ? ? ?System.out.println(i5==i6);//将i5和i6进行比较,相等就会输出true,明明相等但仍然是false,得使用数学工具BigDecimal进行比较
? ? ? ?System.out.println(i5);
? ? ? ?System.out.println(i6);
? ? ? ?System.out.println("=====================================================================");
?
? ? ? ?//字符拓展(所有的字符类型本质仍然是数字。通过强制类型转换就可以得到)
? ? ? ?char a1='a';
? ? ? ?char a2='A';
? ? ? ?char a3='中';
? ? ? ?System.out.println((int)a1);
? ? ? ?System.out.println((int)a2);
? ? ? ?System.out.println((int)a3);
? ? ? ?//Unicode编码,通过Unicode表进行转化(a=97,A=65),每个占2字节,范围从u0000-uFFFF
? ? ? ?char a4='\u0061';//因为Unicode编码是十六进制
? ? ? ?System.out.println(a4);
? ? ? ?
? ? ? ?/*上面用到了转义字符 ‘\’
? ? ? ?常用的有
? ? ? ?\t 制表符(使用后会相当于按了一下tab)
? ? ? ?\n 换行
? ? ? ?*/
? ? ? ?
? }
}
?
-
引用类型 类,接口,数组
4.强制类型转换
//基础语法02
public class Demo02 {
? ?public static void main(String[] args) {
? ? ? ?/*类型优先级(从低到高):byte,short,char->int->long->float->double
? ? ? ?强制类型转换 格式:(类型)变量名,从高到低转换时使用
? ? ? ?自动转换:从低到高会自动转换
? ? ? ? 注意:不可转换布尔类型
? ? ? ? 注意转换时会出现精度问题以及内存溢出问题(有些数据类型范围比较小)
? ? ? ? */
? ? ? ?//强制转换
? ? ? ?int i=1;
? ? ? ?byte i1=(byte) i;
? ? ? ?System.out.println(i1);
? ? ? ?//自动转换
? ? ? ?int a=1;
? ? ? ?float a1=a;
? ? ? ?System.out.println(a1);
?
? ? ? ?//如何解决内存溢出问题
? ? ? ?int money=10_0000_0000;//jdk7新特性,数字之间可以用下划线分割,方便读写
? ? ? ?int year=20;
? ? ? ?int total1=money*year;//输出会导致内存溢出
? ? ? ?long total2=money*year;//默认的结果是int,仍然会导致内存溢出
? ? ? ?long total3=money*(long)year;//要计算过程中就把一个转换类型,才能防止内存溢出
? ? ? ?System.out.println(total1);
? ? ? ?System.out.println(total2);
? ? ? ?System.out.println(total3);
? }
}
?
5.变量与常量
//基础语法03 变量与常量
?
/* 变量:
java变量是程序中最基础的存储单元,其元素包括了 变量名,变量类型 以及很重要的 作用域
一般格式:数据类型 变量=值;(不建议一行定义多个变量)
?
变量作用域:
类变量:写在类里面的。 格式:static 数据类型 变量=值;
实例变量:(java没有全局变量),一般写在类中间,方法外面。格式:数据类型 变量;(不用赋值)
局部变量:写在方法里面,最常用的变量。格式:数据类型 变量=值;(作用范围就在两个大括号里面)
*/
?
?
/* 常量:一种特殊的变量,定义之后就不会再改变。一般格式:final 数据类型 常量名(一般为大写字母)=值; */
public class Demo03 {
? ?String name;/*实例变量,无法直接被输出。如果没有自行初始化,默认一般按照数据类型默认为0 ,0.0,u0000(字符)
? ?布尔值默认值为null
? ?除了八大基本类型,其他默认为null*/
? ?static ?int year=2021;//类变量,可以直接被输出,从属于当前这个类
? ?static ?final float PI=3.1415926535F;//常量,可直接被输出
? ?public static void main(String[] args) {
? ? ? ?Demo03 demo03=new Demo03();
? ? ? ?//demo03.name="lisa";
? ? ? ?System.out.println(demo03.name);//实例变量无法直接输出
? ? ? ?System.out.println(year);//类变量可直接被输出
? ? ? ?System.out.println(PI);//常量可直接被输出
? }
}
?
?
/*变量的命名规范
1.变量名,方法名以及类名应该做到“见名知意”(使用英文或者英文缩写)
2.类成员变量:首字母小写和驼峰原则(例如lastTime第一个单词小写接着第二个单词首字母大写)
3.局部变量:首字母小写以及驼峰原则
4.常量:全部大写以及下划线(太长可以加下划线)MAX_TIME
5.类名:首字母大写以及驼峰原则
6.方法名:首字母大写以及驼峰原则
*/
6.包机制
如果创建的Demo太多看上去不舒服可以先创建一个包,包创建如下图所示:然后可以将所有的Demo拖进去,(相当于起了一个文件夹的作用),按住shift选中第一个文件和最后一个文件就可以全选了
?
包命名
一般使用公司域名之类 =,比如www.baidu.com,会创建一个三级包www[baidu[com]]
使用包成员
利用import 语句使用包里面的成员,格式一般为 import 包名.包成员名; ,例如:import base.Demo01;
如果要导入所有的成员,可以使用代替,例如import base.;
7.运算符
package base;
?
//基础语法04 基本运算符
/* 最常用的运算符
算数运算符:+,-,*,/,%(取余数,也称为求模),++,--
赋值运算符:=
关系运算符:>,<,>=,<=,==,!=,instanceof
逻辑运算符:&&,||,!(与或非)
位运算符:&。|,~,^,>>,<<
条件运算符:? :
拓展赋值运算符:+=,-=。*=,/=
*/
public class Demo04 {
? ?public static void main(String[] args) {
?
? ? ? ?//赋值运算符
? ? ? ?int a=5;
? ? ? ?byte b=12;
?
?
? ? ? ?//算数运算符
? ? ? ?System.out.println(a+b);//注意:结果类型会变成int,结果会自动往参与运算中最高优先级的类型转换
? ? ? ?System.out.println((double)b/a);//注意:除法运算如果想取得准确结果需要用到强制类型转化,否则只是四舍五入后的整数部分
? ? ? ?System.out.println(b%a);//取余运算或者叫模运算
? ? ? ?System.out.println("=======================================================================");
?
? ? ? ?//算数运算符中两个特殊的运算符 ++(自增)--(自减)
? ? ? ?int c=a++;//等价于c=a;a=a+1 意思是先给c赋值,在进行自增
? ? ? ?int d=++a;//等价于a=a+1;d=a 意思是先给a自增,再给d进行赋值,不论是a++还是++a,都为a=a+1
? ? ? ?System.out.println(c);
? ? ? ?System.out.println(d);
? ? ? ?System.out.println(++b);
? ? ? ?System.out.println(b++);
? ? ? ?System.out.println("=======================================================================");
?
?
?
?
? ? ? ?//关系运算符
? ? ? ?System.out.println(a>b);
? ? ? ?System.out.println(a<b);
? ? ? ?System.out.println(a==b);
? ? ? ?System.out.println(a!=b);//会判断后输出布尔值
? ? ? ?System.out.println("=======================================================================");
?
?
? ? ? ?//逻辑运算符 与&& 或|| 非!
? ? ? ?boolean e=true;
? ? ? ?boolean f=false;
? ? ? ?System.out.println(e&&f);//都为真才真,一个为假就输出假
? ? ? ?System.out.println(e||f);//只要一个为真就输出真
? ? ? ?System.out.println(!e);//如果为真就输出假
? ? ? ?System.out.println("=======================================================================");
?
? ? ? ?//位运算符
? ? ? ?/*
? ? ? ?举例: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
? ? ? ? ? ? ~B=1111 0010 ? ~取反:每位取相反的数
?
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
? ? ? ? ? ? 重点重点重点,移位符:左移:<<(每移一位相当于*2) 右移:>>(每移动一位相当于/2)
? ? ? ? ? ? !!!!!位运算是运算效率最高的 ? ? ? 计算机中2*8算的最快的方式是2*2*2*2
? ? ? ? ? ? 2<<2=8
? ? ? ? ? ? 0000 0000 :0
? ? ? ? ? ? 0000 0001 :1
? ? ? ? ? ? 0000 0010 :2
? ? ? ? ? ? 0000 0011 :3
? ? ? ? ? ? 0000 0100 :4
? ? ? ? ? ? 0000 0101 :5
? ? ? ? ? ? 0000 0110 :6
? ? ? ? ? ? 0000 0111 :7
? ? ? ? ? ? 0000 1000 :8
? ? ? ? ? ? 可以看出,从2到8只相当于把2的1朝向左边移动了2位
? ? ? ? */
? ? ? ?System.out.println(2<<2);
? ? ? ?System.out.println(8>>2);
? ? ? ?System.out.println("=======================================================================");
?
?
? ? ? ?//!!!!!!!!!!!!!条件运算符: ? ? :
? ? ? ?/*
? ? ? ? ?x ? y : z ? ? ? ? 意思为如果x为true,(x一般是个判断语句)则结果为y,否则为z
? ? ? ? */
? ? ? ?int s=60;
? ? ? ?String S=s>=60 ? "及格" :"不及格";//必须掌握
? ? ? ?System.out.println(S);
? ? ? ?System.out.println("=======================================================================");
?
? ? ? ?//赋值运算符
? ? ? ?int X=10;
? ? ? ?int y=20;
? ? ? ?X+=y;//X=X+y.其余同理
? ? ? ?X-=y;
? ? ? ?//!!!!!!!字符串连接符+ ,使用时要将字符串类型放在后面,不然会导致后面所有类型均转换为字符串类型
? ? ? ?System.out.println(""+X+y);//字符串类型在前面,将后面的两个int类转换了,所以导致输出结果错误
? ? ? ?System.out.println(X+y+"");
?
?
? }
}
?
8.javaDoc
-
使用javadoc命令生成自己的API文档 直接在目录前面加cmd进入命令窗 ? 输入 javadoc (-encoding UTF-8 -charset UTF-8(防止中文乱码加的参数)) Doc.java -
? 然后就能看到生成了很多文件,点首页文件浏览器就会自动打开看到生成的文档了 ? -
参数信息 @author 作者名 @version 版本号 @since 指明需要最早使用的JDk版本 @param 参数名 @return 返回值情况 @throw 异常抛出情况 package base;
//生成Doc
/**
* @author fx
* @version 1.1
* @since 1.0
*/
public class Doc {
? ?String name;
? ?/**
? ? * @author fx
? ? * @param name
? ? * @return
? ? * @throws Exception
? ? */
? ?public String test(String name) throws Exception{
? ? ? ?return ?name;
? }
}
? -
使用IDEA生成javaDoc -
从上到下
-
选择是整个项目还是模块还是单个文件 -
文档输出路径 -
Locale 选择地区决定了文档的语言,中文就是zh_CN -
传入JavaDoc的参数,一般这样写 -encoding UTF-8 -charset UTF-8
|