基础阶段
Java基础01:注释
书写注释是一个非常好的习惯。
Java的注释有三种:单行注释、多行注释、文档注释。
文档注释和JavaDoc联合使用。
Java基础02:标识符和关键字
Java所有组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
标识符注意点:
- 所有标识符应该以字母,美元符或者下划线开始。
- 首字符之后可以是字母、美元符、下划线或者数字的任何字符的组合。
- 不能使用关键字作为变量名或者方法名。
Java基础03:数据类型讲解
强类型语言:要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用。Java就是一种强类型语言。
弱类型语言
Java的数据类型分为两大类:基本类型(primitive type)和引用类型(reference type),基本类型有8种,整数类型4种,浮点类型2种,字符类型1种,boolean一种。
long类型后面加一个L或者l
float类型要在数字后面加个F
字符串String不是关键字,是类,是引用数据类型。
电脑的32位和64位的区别是什么?
32位操作系统只能使用32位的操作系统,而64位操作系统不但能装32位操作系统也能装64位操作系统。内存中寻址能力,64位最多可以支持128G的内存,而32位的最多只有4G的内存。64位的支持软件更多。
Java基础04:数据类型拓展以及面试题讲解
整数拓展:进制表示方法 二进制0b 十进制 八进制0 十六进制0x
浮点数拓展:float f = 0.1f和double f = 1.0/10不相等
布尔值扩展:使用变量直接判断对错if(flag)
//float 有限 离散 舍入误差 大约 接近但不等于
//最好完全避免使用浮点数进行比较
//BigDecimal类 数学工具类
float f = 0.1f;//0.1
double d = 1.0/10;//0.1
system.out.println(f == d);
float d1 = 23131312312312313f;
float d1 = d1 + 1;
system.out.println(d1 == d2);
false
true
所有的字符本质还是数字。
char涉及到一个编码问题,Unicode编码可以处理各种语言文字,占2个字节,65536,最早的excel有65536行。
从U0000~UFFFF
//强制类型转换
char c3 = '\u0061';
system.out.println(c3);
//转义字符
//\t 制表符
//\n 换行符
system.out.println("Hello\nWo\trld");
//思考题
String sa = new String("hello world");
String sb = new String("hello world");
system.out.println(sa == sb);
String sc = "hello world";
String sd = "hello world";
system.out.println(sc == sd);
//对象 从内存分析
a
Hello
Wo rld
false
true
包含很多转义字符。
Java基础05:类型转换
由于Java是强类型语言,所以进行有些运算的时候需要用到类型转换。
运算中,不同类型的数据先转换为同一类型,然后进行运算。
由低到高优先级:byte→short→int→long→float→double。
优先级由高到低强制转换,由低到高自动转换。
注意点:
- 不能对布尔类型进行转换
- 不能把对象类型转换为不相干的类型
- 由高到低为强制转换
- 转换的时候可能存在内存溢出,或者精度问题
内存溢出:
int i = 128;
byte b = (byte)i;
system.out.println(i);
system.out.println(b);
128
-128
精度问题:浮点数转为整数丢失小数点后的数。
常见问题:
public class Demo01 {
public static void main(String[] args) {
//操作比较大的数的时候,注意溢出问题。
//JDK新特性,数字之间可以用下划线分隔
int money = 10_0000_0000;
int years = 20;
int total = money * years;//-1474836480,计算的时候溢出了
long total2 = money * years;//默认是int,转换之前已经存在问题
long total3 = money * (long)years;//先把一个数转换为long
System.out.println(total3);
}
}
20000000000
Java基础06:变量、常量、作用域
变量:
Java变量是程序中最基本的存储单元,其要素包括变量名、变量类型和作用域。
注意事项:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
- 变量名必须是合法的标识符。
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束。
public class Demo08 {
//属性:变量
//代码块
static{
}
//实例变量:从属于对象,如果不自行初始化,这个额类型的默认值 0 0.0 布尔值默认false 字符串为null
String name;
int age;
char ah;
//类变量 static
static double salary = 2500;
//main方法
public static void main(String[] args) {
//局部变量:必须声明和初始化值
int i = 10;
System.out.println(i);
//变量类型 变量名字 = new Demo08();
Demo08 demo08 = new Demo08();
System.out.println(demo08.age);
System.out.println(demo08.name);
System.out.println((int)demo08.ah);
//类变量 static
System.out.println(salary);
}
//其他方法
public void add(){
}
}
常量:
常量可以理解成一种特殊的变量,它的值被设定以后,在程序运行过程中不允许改变。
常量名字一般用大写字符。
public class Demo09 {
//修饰符,不存在先后顺序
static final double PI = 3.1415;
// final static double PI = 3.1415;
public static void main(String[] args) {
System.out.println(PI);
}
}
变量命名规范:
Java基础07:基本运算符
package operator;
public class Demo01 {
public static void main(String[] args) {
//二元运算符
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 / (double)b);
}
}
package operator;
public class Demo02 {
public static void main(String[] args) {
long a = 165135165156L;
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
}
}
package operator;
public class Demo03 {
public static void main(String[] args) {
//关系运算符结果:正确,错误 布尔值
int a = 10;
int b = 20;
System.out.println(a > b);
System.out.println(a < b);
System.out.println(a == b);
System.out.println(a != b);
int c = 21;
System.out.println(c % a);//取余
}
}
Java基础08:自增自减运算符、初识Math类
package operator;
public class Demo04 {
public static void main(String[] args) {
//++ -- 自增 自减 一元运算符
//理解++a和a++ 的区别
//幂运算 2^3 2*2*2 = 8 很多运算我们会使用运算类来操作
double pow = Math.pow(2,3);
System.out.println(pow);
}
}
Java基础09:逻辑运算符、位运算符
package operator;
public class Demo05 {
public static void main(String[] args) {
// 与 或 非
boolean a = true;
boolean b = false;
System.out.println(b&&a);
System.out.println(b||a);
System.out.println(!(b&&a));
//短路运算(实验)
int c = 5;
boolean d = (c < 4)&&(c++ < 4);
System.out.println(d);
System.out.println(c);
}
}
Java基础10:三元运算符及小结
package operator;
public class Demo07 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a += b;//a = a + b;
a -= b;//a = a - b;
System.out.println(a);
//字符串连接符 + ,String
System.out.println(""+ a + b);
System.out.println(a + b + "");
}
}
package operator;
public class Demo08 {
public static void main(String[] args) {
//x ? y : z
//如果x为true,则结果为y,否则结果为z
int score = 50;
String type = score < 60 ? "不及格":"及格";
System.out.println(type);
//if
}
}
Java基础11:包机制
为了更好地组织类,Java提供了包机制,用于区别类名的命名空间。
包语句的语法格式为:
package pkg1[. pkg2[.pkg3...]];
一般利用公司域名倒置作为包名;
为了能够使用某个包的成员,我们需要在Java程序中明确导入该包,使用“import”可以完成此功能。
import package1[.pakage2...].(classname|);
import a.b.
Java基础12:JavaDoc
package com.maynerd.operator;
/**
* @author 13781
* @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;
}
/**
*
* @param args
*/
public static void main(String[] args) {
}
}
之后通过命令行 javadoc 参数 Java文件。