Java基础
Java基础学习
1.注释
及笔记,备注,给复杂的项目结构进行讲解,在Java中注释不会被执行且在代码学习编译过程中书写注释是非常好的习惯。
在Java中,注释有三种,单行注释,多行注释,文档注释。
首先是单行注释与多行注释:(文档注释在后面会仔细讲解)。
package Javabase;
public class Day01 {
public static void main(String[] args) {
//单行注释是用”//“
System.out.println("Hello World!!!!");
//多行注释用“/* 文字 */”
/*例如
我是多行注释
我是多行注释
我是多行注释
*/
//JavaDoc:文档注释 ” /** 注释 */
/**
* 例如:0
* @Description Hello world
* @Manager
*/
//平时写代码一定要注意规范
//有趣的注释
/***
* _ooOoo_
* o8888888o
* 88" . "88
* (| -_- |)
* O = /O
* ____/`---'____
* . ' | |// `.
* / ||| : |||//
* / _||||| -:- |||||-
* | | \ - /// | |
* | _| ''---/'' | |
* .-__ `-` ___/-. /
* ___`. .' /--.-- `. . __
* ."" '< `.____<|>_/___.' >'"".
* | | : `- `.;` _ /`;.`/ - ` : | |
* `-. _ __ /__ _/ .-` / /
* ======`-.____`-.________/___.-`____.-'======
* `=---='
*
* .............................................
* 佛祖保佑 永无BUG
*/
2.标识符与关键字
Java所有的组成部分都需要名字。类名,变量名都被成为标识符。所有的标识符都应以字母(A—Z或a—z,)$美元符,_下划线开始。
package Javabase;
public class Day01Demo1 {
public static void main(String[] args){
String Ahello = "li";
String hello = "li";
String $hello = "li";
String _hello = "li";
//所有标识符都应该以字母(A-Z或a-z),美元符($)或者下划线(_)开始
//String 1hello = "li";数字开头不行
//String #hello = "li";#开头不行
//String *hello = "li";*开头不行
// 首字符之后可以是字母(A-Z或者a-z),美元符($),下划线(_)或任何数字组合
//不能使用关键字作为变量名或方法名
//如:String class = "li";(class属于关键字因此会报错。)
//****标识符的大小写敏感的*****
String Man= "li";
String man = "li";
//这两个是不一样的
//可以用汉字输入变量
String 三角洲行动 = "三角洲巅峰";
System.out.println(三角洲行动);
}
3.数据类型
数据类型分为强类型语言与弱类型语言。
强类型语言:要求变量的使用要严格符合规定,所有的变量必须先定义后才能使用。
弱类型语言:要求变量的使用须符合规定,所有的变量都必须定义后才能使用。
Java的数据类型可分为两大类:基本类型与引用类型
基本类型可以分为:
整数型:byte(一个字节) 、short(两个字节) 、int(四个字节) 、long (八个字节)。
浮点型(小数):float(四个字节)、double(八个字节)
字符类型:char
布尔型:bool————true or false
引用类型:类、接口、数组
package Javabase;
public class Day02 {
public static void main (String[] args){
//数据类型包含强类型语言与弱类型语言
//强类型语言的使用要”严格“符合规定,所有变量都必须定义后才能使用。
//弱类型语言的使用需要符合规定,所有变量都必须定义后才能使用。
//数据类型包含基本类型和引用类型
String a="hello";
int num = 10;
System.out.println(a);
System.out.println(num);
//八大基本数据类型
//整数型
int num1 = 10;//最常用
byte num2 = 20;
short num3 = 30;
long num4 = 40L;//一般在定义正的类型的时候在数据类型后加上L来进行表示
//浮点型(小数)
float num5 = 50.5F;//float类型一般要在数字后面加F
double num6 = 3.1415926;
//字符
char name = 'a';//只能写一个字或单词
//字符串,String不是关键字,是类
//String name1 = "lijunhao,黎君豪";
//布尔值
boolean flag = true;
boolean flag1 = false;
//整数拓展:二进制0b 十进制 八进制0 十六进制0x:0~9 A~F 注:0'零'
int i = 10;
int i2 = 010;
int i3 = 0x10;
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
System.out.println("===================================================");
//==============================================================
//浮点数拓展
//如何表示银行业务
//float
//double
float f = 0.1f;//0.1
double d = 1.0/10;//0.1
System.out.println(f==d);//会返回false,但是正常输出没有问题
System.out.println(f);
System.out.println(d);
float d1 = 321123321123f;
float d2 = d1 + 1;
System.out.println(d1==d2);//生成的true
//为什么会出现这个问题呢?
//因为浮点数是有限的 也是离散的 有一定的舍入误差 因此它会输出一个大约数 接近但不等于
//因此最好避免使用浮点数进行比较****
//因此最好避免使用浮点数进行比较****
//因此最好避免使用浮点数进行比较****
//那么如何表示银行浮点数呢?
//用类 : 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);
//所有的字符本质都是数字
//char会涉及编码问题 Unicode会占两个字节 65536个字节, excel表格同样是65536 = 2的16次方
//A = 代表的是65 a = 代表的是96 Unicode的区间范围U0000----UFFFF
char c3 = 'a';
System.out.println(c3);
//转义字符
// 制表符
//
换行
System.out.println("hello world");
System.out.println("hello
world");
System.out.println("===================================================");
//布尔值拓展(用于判断)用if表示
boolean falg = true;
if(flag==true){}//这两行代码是相等的,上面一条是新手常用
if(flag){}//老手
//less is more!:代码要精简易读
}
}
变量:既可以变化的量Java是一种强类型语言,因此每个变量都必须声明期类型。(后面会仔细讲解)
Java变量程序中最基本的存储单元要包括变量名、变量类型、与作用域。
type varName [=varName] [{,varName = [=value]}]
// 数据类型 变量名 = 值; 注:可以用逗号隔开多个变量
4.数据类型转换
由于Java是强类型语言,所以在进行运算的时候,需要进行类型转换,在运算中不同类型的数据先转化为统一类型进行运算
数据转换优先级是由低到高进行的:
byte,short,char——int——long——float——double
char是字符但是可以转化为数字,float、double是小数其优先级大于整数。
package Javabase;
public class Day03 {
public static void main(String[] args) {
int i = 128;
byte b = (byte)i;//但是byte的大小为-128~127超过会有内存溢出的情况
//强制转换 (类型)变量名 由高----->低
//自动转换 由低----->高
int i1 = 128;
double b1 = i;
System.out.println(i);
System.out.println(b);
System.out.println(i1);
System.out.println(b1);
/*注意点
1.不能对bool进行转换
2.不能把对象类型转化为不相干的类型
3.在把高容量转化为低容量的时候,用强制转换,而低容量转高容量时可自动转换
4.转换时可能出现精度问题或者内存溢出。
*/
System.out.println("================================");
System.out.println((int)23.7);
System.out.println((int)-45.89f);
System.out.println("================================");
char c = 'a';
int d = c + 1;
System.out.println(d);
System.out.println((char)d);
System.out.println("================================");
//操作比较大的时候注意溢出问题
//Jdk7的新特性,数字之间可以用下划线分割
int money = 10_0000_0000;
System.out.println(money);
int years = 20;
int total_years = money*years;
System.out.println(total_years);//输出的是-1474836480,计算的时候溢出了
long total_years2 = money*years;
System.out.println(total_years2);//输出的还是-1474836480,默认是int,在转换前已经出现问题了
long total_years3 = money * ((long)years);//需要先把一个属转换为Long
System.out.println(total_years3);
//尽量用大写的L来进行表示,防止看成1
}
}
5.变量与常量
变量是什么?是可以变化的量!
Java是一个强类型语言每一个变量都必须声明其类型。Java变量是程序中最基本的存储单元,其要素包括变量名、变量类型、作用域。
需要注意的是:在基础阶段每个变量都有类型,类型可以是基本类型也可以是引用类型。变量名必须是合法的标识符。变量声明必须是一条完整的语句,因此每一个声明都必须以分号“;”结束,否则会报错。
作用域:
类变量:实例变量;局部变量
常量:初始化后不能改变了的量,值被设定后,不能再改变
package Javabase;
public class Day04 {
//2.类变量 static
static double salary = 2500;
public static void main(String[] args) {
//int a,b,c;不建议定义多个变量值,会比较麻烦
/*
int a = 1,b = 2,c = 3;或者
int a = 1;
int b = 2;
int c = 3;
*/
int a = 1;//我们需要注重程序的可读性
int b = 2;
int c = 3;
String name = "lijunghao";
char x = '中';
double pi = 3.1415926;
//变量作用域分为:类变量,实例变量,局部变量。
/*
public class Day04变量 {
**main方法可以定义属性———————可以看作变量
public static void main(String[] args){
1.局部变量:即在两个大括号之间且在使用之间必须声明和初始化值
}
其他方法
public void add(){
*/
//int i;
//System.out.println(i);//它是无法输出的因为没有初始化值
int q = 10;
}
public void add(){
//System.out.println(q);//为何无法输出,因为q只在上一个括号有定义
}
//3.实例变量在类里面;从属于对象;如果不进行初始化,这个类型的默认值 0或0.0
//布尔值默认是false
//除了八个基本类型其余都是null
String name;
int age;
//变量类型 变量名字 = new demo08()
//Demo08 demo08 = new demo08;
package Javabase;
public class Day04Demo2 {
//修饰符;不存在先后顺序
public static final double PI = 3.14;
final static double PI1 = 3.14;
static final double PI3 = 3.14;
public static void main(String[] args) {
System.out.println(PI);
}
}
//我们需要记住如:常量 final 类变量 static 数据类型double
变量的命名规范:
所有的变量,方法,类名,需要见名知意!!!!
类成员变量:首字母小写且遵守驼峰原则;month Salary 除了第一个单词外后面单词首字母大写:last Name.
局部变量:同样首字母小写与驼峰原则。
常量:用大写字母,如单词较多可用下划线:MAX_VALUE
类名:首字母大写与驼峰原则:Man、 Good Man
方法名:首字母小写与驼峰原则
6.基本运算符
Java中的基本运算符包含:算术运算符、赋值运算符,关系运算符、逻辑运算符、位运算符、条件运算符、拓展赋值运算符。
package Javabase;
public class Day05 {
public static void main(String[] args) {
//Java运算符优先级(),一元运算符,二元运算符,赋值,逻辑运算符...
// ********二元运算符:“+,-,*,/,%,++,--”(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);//输出直接去取零了,因改为以下
System.out.println(a/(double)b);
System.out.println(c%b);//c/b的余数 及 25 / 20 = 1...5
System.out.println("===================================================");
//******** ++ , -- 自增,自减(一元运算符)******重点*********
int a3 = 3;
int b3 = a3++;//执行完代码后,先给b赋值,再自增
//a3 = a3 + 1
//a3++ = a3 + 1(其隐藏了一段代码)
System.out.println(a3);
int c3 = ++a3;//执行完代码前,先给自增,再赋值b
System.out.println(a3);
System.out.println(b3);
System.out.println(c3);
//******** 赋值运算符;“=”
System.out.println("===================================================");
//********* 关系运算符;”>,<,>=,<=,==,!=instanceof“
//关系运算符返回的结果;正确,错误(通过boolean来输出)
int a1 = 10;
int b1 = 20;
System.out.println(a1>b1);
System.out.println(a1<b1);
System.out.println(a1==b1);
System.out.println(a1!=b1);
//关系运算符跟if使用
System.out.println("===================================================");
//********* 逻辑运算符 &&(与 and) ||(或 or) !(非 :取反,非你即我)
boolean a4 = true;
boolean b4 = false;
System.out.println("a4 && b4: "+(a4&&b4));//逻辑与运算:两个变量都为真,结果才为true
System.out.println("a4 || b4: "+(a4||b4));//逻辑或运算:两个变量有一个为真,结果才为true,两个都为假结果才为假。
System.out.println("! (a4 && b4): "+!(a4&&b4));//如果是假则为真,如果是真则为假
//短路运算***多思考*****
int c4 = 5;
boolean d4 = (c<4)&&(c++<4);//因为(c<4)为假,由于&&的逻辑运算法则,因此不会执行(c++<4)
System.out.println(d4);
System.out.println(c4);//因此输出为5
System.out.println("===================================================");
//********* 位运算”& | ~ ^ >> << >>>“(跟2进制有关)
/*
A = 0011 1100
B = 0000 1011
------------------
A&B 0000 1000 (对应位如果两个都为1才是1否则就是0)
A|B 0011 1011 (对应位如果两个都为0才是0否则就是1)
A^B 0011 0111 (对应位如果两个相同则为0否则就是1)
~B 1100 1000 (对应位如果两个相同则为1否则就是0)
**** 面试题 ****
2*8怎么运算最快
2*8=16 拆分为 2*2*2*2
<< 左移 把数字*2
>> 右移 把数字/2
*********效率极高*****
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16
*/
System.out.println(2<<3);
System.out.println("===================================================");
//********* 扩展运算符 += -= *= /=(更加方便)
int a5 = 10;
int b5 = 20;
a5+=b5;//a = a+b
a5-=b5;//a = a-b
System.out.println(a5);
//********* 字符串连接符 + , String (加号运算符两侧只要有一方有string类型,就会把其他操作数也转为string类型,再进行连接)
System.out.println(""+a5+b5);
//****面试题*** 询问 System.out.println(""+a5+b5); System.out.println(a5+b5+"");有什么区别
System.out.println(a5+b5+"");//字符串""如果在后,前面依旧会进行运算
System.out.println("===================================================");
//*********条件运算符(三元运算符) ?:
// x ? y : z
//如果 x==true ,则结果为y,否则结果为z;
int score = 50;
String type = score <60 ? "不及格":"及格";//虽然方便,但是必须掌握,在开发中十分常见
//后会学习if
System.out.println(type);
}
}
运算输出内容拓展:
package Javabase;
public class Day05Demo3 {
public static void main (String[]args){
long a = 123321123;
int b = 123;
short c =12;
byte d = 8;
System.out.println(a+b+c+d);//long
System.out.println(b+c+d);//int
System.out.println(c+d);//int
//操作中有一个数为long,其结果类型也为long,没long则都为Int
System.out.println((double)c+d);//如果有一个数是double结果一定是double;
//System.out.println((string)(c+d));//不能转换为(cast)String
//幂运算 2^3 2*2*2 = 8 很多运算我们会使用工具类操作
double pow = Math.pow(3, 2);
System.out.println(pow);
}
}
7.包机制与Java Doc
为了更好的组织类Java提供了包机制用于区别类名的命名空间,其本质就是文件夹。
包(package)的规范:一般使用公司域名倒置作为包名如:网址:www.CSDN.com 它的包名即为:com.CSDN.www。
导入包:如何在编译过程中导入其他包?一般用import导入,一般写法为 :
import 文件路径;//尽量不要让包中文件的名字重复
//如何导入包中的所有类
import 文件路径 *;
//这里的星号“*”为通配符
Java Doc——文档注释:加在类上面就是类的注释加在方法上面就是方法的注释
Java Doc命名是用来生成自己的API文档
package Javabase;
//JavaDoc(文档注释:加在类上面就是类的注释加在方法上面就是方法的注释)
/**
* @author li
* @version 1.0
* @since 1.0.8
*
*/
public class Day06 {
//包机制
//为了更好的组织类,java提供了包机制用来区别类名的命名空间,其本质就是文件夹
//包的规范:一般用公司域名倒置作为包名例如:www.baidu.com -------> com.baidu.www
//导入包用:import 文件路径 ; 尽量不让要让包中的名字重复。
//如何导入包下所有的类
//import 文件路径 *; “*”通配符。
//JavaDoc
String name;//(一种属性)
/**
* (下面两行代码自动生成了参数与返回值)
* @param name
* @return
*/
//public String test(String name);{//(一种方法)
//return name;
// }
/*
参数信息:
@author 作者名
@version 版本号
@since 指明最早使用的JDK板本
@param 参数名
@return 返回值情况
@throws 异常抛出情况
*/
如何编译Java文件便于阅读有两种方法,1.是通过命令行进行编译 2.是通过IDEA生成JavaDoc文件:
1.通过命令行生成:
首先在Java包中找到要打开的文件,在路径前输入cmd打开命令控制符并输入:
javadoc 参数 Java文件 参数如;-encoding UTF-8 -charset UFT-8:可以让中文的文件能不乱码

生成之后在文件找到

点开就可以看见了。
2.通过IDEA生成JavaDoc文件
1.点开工具栏,选择Generate JavaDoc (生成javadoc)
2.分别选择生成范围、输出目录、区域设置:(zh_CN)、其他命令参数,如 -encoding UTF-8 -charset UFT-8
3.在保存的目录里打开文档即可。
结语
好了,就是这些,仅仅只是我自己学习后的笔记与见解。感谢观看。









