基础语法
注释
//单行注释
/*多行注释
多行注释*/
//JavaDoc:文档注释
/**
*每一行都有个星号,星号有功能,可以加参数,会被识别(见识一下样子就好,除非进大公司不然很少遇到)
*/
关键字和标识符
更新:【强制】代码中的命名均不能以**下划线或美元符号开始,也不能以下划线或美元符号**结束。
数据类型讲解
2013年以前用的电脑的系统基本上都是windows xp,而大部分的xp系统都是32位的,自从windows 7推出后,64位正式出现在人们面前,从这时候开始渐渐很多人都在尝试使用64位的系统。那么,对普通的电脑使用者来说,这32位和64位到底有什么区别呢?
Cpu想到于电脑的“大脑”,根据cpu就一次处理数据的能力,把处理器分为了32位和64位,甚至很久以前还有8位和16位的,后来被淘汰了。如果你的电脑cpu是32位的,那么就只能装32位的系统;要是你的电脑cpu是64位的,那么既可以装64位的也可以装32位的操作系统,只不过装32位的对于电脑来说有点浪费。64位毕竟是升级了的,所以加了很多新的功能和技术,比32位明显提升了一个阶次。
32位操作系统可以寻址2的32次方个字节的内存范围,64位操作系统则可寻址2的64次方个字节的内存范围。换句话说,32位的操作系统理论上只能使用约4GB的内存,要是程序想使用超过4GB的内存,那么就要选择64位的操作系统。显然,64位比32的内存容量要大很多,内存容量的大小对运算速度有一定的影响,因而64位的运算速度理论上来说比32位快。不是说任何内存的电脑使用64位,它的运算速度就一定比32位的快,比如你的电脑是2GB的,那么反而使用32位的会流畅很多。
64位的操作系统刚出来的时候,兼容性比较差,因为当时很多的软件是依据32位写的,才导致在64位上不能运行。这是软件没跟上系统的脚步,才使得当时很多人不喜欢用64位的操作系统。随着64位的发展,经过一次又一次改良后,它的兼容性好了很多,大部分32位的软件都可以在64位的操作系统下正确运行了。若是专门为64位系统而开发的软件,还经过了特别的优化,在64位操作系统上会运行得更快。如今,64位还在不断的改善之中,当它能够兼容所有32位的软件时,估计32位就慢慢隐退了吧。
这样看来,64位比32位的在性能上强了不少,这是它的优势所在。若非要说64位的缺点,那就是它的功能强大了以至于也比较占内存吧。据一项64位和32位内存占用的比较实验表明,它们在内存占用的差异不超过9.9%,甚至在一些特殊的情况下,64位占用的内存还比32位更少!所以,用不着特意为了64位操作系统去升级内存。总之,64位操作系统已然成为了主流,只要是配置稍微好一点的电脑,都建议装64位的,用起来会更流畅。
数据类型拓展及面试题讲解
public class Demo03 {
public static void main(String[] args) {
//整数拓展:二进制0b 八进制0 十六进制0x(小写x)
int i=10;
int i2=010; //八进制0
int i3=0x10; //十六进制0x(小写x)
System.out.println(i); //10
System.out.println(i2); //8
System.out.println(i3); //16
System.out.println("===================================================");
//浮点数拓展 银行业务如何表示?钱->用BigDecimal数学工具类
//float 有限 离散 舍入误差 大约 接近但不等于
//double
//最好完全避免使用浮点数进行运算!!!
float f=0.1f;
double d=0.1/10;
System.out.println(f==d); //false
float d1=12321123453214321f;
double d2=d1+1;
System.out.println(d1==d2); //true
System.out.println("===================================================");
//字符串拓展
char c1='a';
char c2='中';
System.out.println(c1); //a
System.out.println((int)c1); //97
System.out.println(c2); //中
System.out.println((int)c2); //20013
//所有的字符本质还是数字
//编码 Unicode 占2字节 最多表示65536个字符(现在不止)
//Unicode编码的表示方式:U0000~UFFFF
char c3='\u0061';
System.out.println(c3); //a
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
}
}
类型转换
强制转换:(类型)变量名 高->低
自动转换: 同级转换 低->高
public class Demo06 {
public static void main(String[] args) {
//操作比较大的数的时候,注意溢出问题
//JDK7新特性,数字之间可以用下划线分割
//区分long和int时,尽量用大写L结尾
int money=10_0000_0000;
int years=20;
int total=money*years;
System.out.println(total);//-1474836480
long total3=money*((long)years);//先把一个数转换为long
System.out.println(total3);//20000000000
long a=12324124124;
int b=123;
short c=10;
byte d=8;
System.out.println(a+b+c+d);//结果为long型
System.out.println(b+c+d); //结果为int型
System.out.println(c+d); //结果为int型
}
}
变量,常量,作用域
public class Demo08 {
//**类变量** static
static double salary=2500;//int->double自行转换类型
//属性:变量
//**实例变量**:从属于对象;如果不自行初始化,这个类型的默认值 0 0.0
//布尔值:默认值是false
//除了基本类型,其余的默认值都是null
String name;
int age;
//main方法
public static void main(String[] args) {
//**局部变量**:必须声明和初始化值
int i=10;
System.out.println(i); //10
//变量类型 变量名字 = new Demo08();
Demo08 demo08 = new Demo08();
System.out.println(demo08.age); //0
System.out.println(demo08.name); //null
//类变量 static
System.out.println(salary); //2500.0
}
//其它方法
public void add(){
}
}
public class Demo09 {
//变量类型(double)前面都是修饰符,不存在先后顺序
static final double PI=3.14;
public static void main(String[] args) {
System.out.println(PI);
}
}
基本运算符
位运算符
package operator;
public class Demo06 {
public static void main(String[] args) {
/*
A=0011 1100
B=0000 1101
位运算:
A&B=0000 1100 //上下两个都是1,才为1
A|B=0011 1101 //上下两个都是0,才为0
A^B=0011 0011 //上下两个相同,则为0(异或运算)
~B=1111 0010 //取反
面试题:
2*8怎样运算最快?在位运算里会变的非常快
<<左移 左移一位 *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); //16
}
}
逻辑运算符
与 或 非
短路运算:
int c=5;
boolean d = (c<4)&&(c++<4);
System.out.println(d); //false
System.out.println(c); //5
//(c<4)为错误后,不对(c++<4)进行判断,故不执行c++ !!!
字符串连接符
+ , String 会把其他操作数变成String再连接
int a=10;
int b=20;
System.out.println(""+a+b); //1020
System.out.println(a+b+""); //30
初识Math类
double a = Math.pow(3,2);
//Math.就可以出现数学函数的各种方法。
包机制
先在设置把Compact Middle Packages去勾
import com.hao.base. //导入这个包下所有的类!* //alt+enter,导入的快捷键
JavaDoc生成文档
package com.hao.base;
/**
* @author hao //掌握
* @version 1.0 //掌握
* @since 1.8
*/
//加在类上面就是类的注释
public class Doc {
String name;
/**
* @author hao
* @param name
* @return
*
*/
//加在方法的上面就是方法的注释
public String test(String name) throws Exception{
return name;
}
}
命令行生成
具体步骤:
javadoc -encoding UTF-8 -charset UTF-8 Doc.java
参数(-encoding UTF-8 -charset UTF-8)是为了多显示中文,出了乱码问题容易解决
最后打开index.html即可
IDEA生成
TOOLS->Generate JavaDoc
学自B站UP狂神,视频链接https://www.bilibili.com/read/cv5702420