注释
-
单行注释 //
-
多行注释 /**/
-
JavaDoc:文档注释, /** */
标识符注意点
数据类型
基本类型(primitive type)
数值类型
整数类型
-
byte占一个字节范围: -128-127
-
short占两个字节范围:-32768-32767
-
int站四个字节范围:-2147483648-2147483647
-
long占8个字节范围:-9223372036854775808-9223372036854775807
浮点类型
-
float站四个字节
-
double占八个字节
字符类型
char 占两个字节
Boolean类型
占一位,其值只有true和false
引用类型(reference type)
-
类
-
接口
-
数组
什么是字节
类型转换
// 整数拓展: 进制 二进制0b 十进制 八进制0 十六进制0x
int i = 10;
int i2 = 010; // 八进制
int i3 = 0x10; // 十六进制
// 浮点数拓展? (银行业务怎么表示? 用BigDecimal(数学工具类) )
// 最好完全避免使用浮点数进行比较
// 最好完全避免使用浮点数进行比较
// 最好完全避免使用浮点数进行比较
float f = 0.1f; // 0.1
double d =1.0/10; // 0.1
System.out.println(f==d); // false
float d1 = 231313f;
float d2 = d1 + 1;
System.out.println(d1==d2); // true
// 字符拓展? 所有的字符本质还是数字 编码 Unicode 2字节 0-65536 Excel 2的16次方 = 65536
char c1 = 'a';
char c2 = '中';
System.out.println(c1);
System.out.println((int)c1); // 强制转换
System.out.println(c2);
System.out.println((int)c2); // 强制转换
// U0000 UFFFF
char c3 = '\u0061';
System.out.println(c3); // a
// 转义字符 \t(制表符)可空格 \n可换行
System.out.println("hello\tworld"); // hello world
// 对象 从内存分析
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);
// 布尔值拓展
boolean flag = true;
if (flag){}
int i = 128;
byte b = (byte)i; // 内存溢出
// 强制转换 (类型)变量名 高---低
// 自动转换 低---高
/*
* 注意点:
* 不能把布尔值进行转换
* 不能把对象类型转换转换为不相干的类型
* 在把高容量转换为低容量的时候,强制转换、
* 转换的时候可能存在内存溢出,或者精度有问题
* */
System.out.println(i); // 128
System.out.println(b); // -128
System.out.println((int)23.7); // 23
System.out.println((int)-45.89f); // -45
// 操作比较大的数的时候,注意溢出问题
// JDK7新特性,数字之间可以用下划线分割
int money = 10_0000_0000;
int years = 20;
int total = money*years; // -1474836480,计算机溢出
System.out.println(total); // 默认是int,转换之前已经存在问题了?
long total3 = money*((long)years); // 先把一个数转换为long
System.out.println(total3); // 20000000000
// l经常会看成1, 所以使用大写的L
变量
// 类变量 static
static double salary = 2500;
// 属性:变量
// 实例变量:从属对象;(类的里面,方法的外面),这个类型的默认值 0 0.0
// 布尔值: 默认是false
// 除了基本类型,其他的默认值都是null
String name;
int age;
// main方法
public static void main(String[] args) {
// 局部变量:必须声明和初始化
int i = 10;
System.out.println(i);
// 变量类型 变量名字=new Demo05();
Demo05 demo05 = new Demo05();
System.out.println(demo05.name);
System.out.println(demo05.age);
// 类变量 static
System.out.println(salary);
}
// 其他方法
public void add() {
}
常量
// static为修饰符,不区分前后
static final double PI = 3.14;
// final static double PI = 3.14;
public static void main(String[] args) {
System.out.println(PI);
}
变量的命名规范
基本运算符
// 二元运算符
// ctrl + D :复制当前行到下一行
int a = 10;
int b = 30;
int c = 20;
int d = 16;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/(double)b);
long a =1231231131L;
int b = 123;
short c = 10;
byte d = 8 ;
// 如果一个为null 就都为null ,有一个为double就都为double
System.out.println(a+b+c+d); // long
System.out.println(b+c+d); // int
System.out.println((double)c+d); // int
// 关系运算符返回的结果:正确 错误 布尔值
int a = 10;
int b = 20;
int c = 21;
// 取余(模运算)
System.out.println(c%a); // c/a 21/10 = 2...1
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a==b);
System.out.println(a!=b);
// ++ -- 自增 自减 一元运算符
int a = 3;
int b = a++; // 执行完成这行代码后,先给b赋值,再自增
// a++ a=a+1
System.out.println(a);
// ++a a=a+1
int c = ++a; // 执行完成这行代码后,先自增 ,再给b赋值
System.out.println(a);
System.out.println(b);
System.out.println(c);
// 幂运算 很多运算,我们会使用一些工具类来操作
double pow = Math.pow(2,3);
System.out.println(pow);
逻辑运算符
// 逻辑运算符
// 与(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;
System.out.println("a && b:"+(a && b)); // 逻辑与运算,两个变量都为真,结果才为真
System.out.println("a || b:"+(a || b)); // 逻辑或运算,两个变量有一个为真,结果为真,两个变量为假,则结果为假
System.out.println("!(a && b):"+!(a && b)); // 逻辑非,变量为真,结果为假,反之,变量为假,结果为真
// 短路运算
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d); //false
System.out.println(c); // 5 因为c<4为false,直接返回false ,计算机没有执行c++ < 4
位运算
// 位运算 效率极高
/*
* A = 0011 1100
*
* B = 0000 1101
*
* A&B = 0000 1100 // 如果对应位都为1,则为1,为1和0,则为0
*
* A|B =0011 1101 // 如果对应位都为0,则为0,为1和0,则为1
*
* A^B =0011 0001 // 如果对应位都为0,则为0,如果对应位都为1,则为0,如果对应位为1和0,则为1
*
* ~B = 1111 0010
*
*
* 面试题
* 怎么运算2*8 ? 2*2*2*2
*
* <<左移 *2 System.out.println(2<<3); // 16
* 0000 0000 0
* 0000 0001 1
* 0000 0010 2 // 逢2进1
* 0000 0011 3
* 0000 0100 4
* 0000 1000 8
* 0001 0000 8
*
* 右移 >> /2
* */
System.out.println(2<<3); // 16
扩展赋值运算符
// 扩展赋值运算符
int a = 10 ;
int b = 20 ;
a+=b; // a = a+b
a-=b; // a = a-b
System.out.println(a);
连接字符串
// 字符串连接符 + , String
// 面试题 ""+a+b 和 a+b+"" 的区别
System.out.println(""+a+b); // 1020 只要有字符串且字符串在前,会先转换为String再进行连接
System.out.println(a+b+""); // 字符串在后面,先进行运算
三元运算符
// 三元运算符 ? :
// x ? y : z // 如果x==true,则结果为y, 否则结果为z
int score = 80;
String type = score < 60 ? "不及格":"及格啦"; // 必须掌握
// if
System.out.println(type);
包机制
JavaDoc(帮助文档)
/**
* @Package : operator
* @Author : llq
* @Date : 2022-11-17 17:02
* @Desc :
*/
public class Demo09 {
String name;
/**
*
* @param name
* @return
* @throws Exception
*/
public String test(String name) throws Exception{
return name;
}
}
想要更详细的讲解,可去看狂神说Java的视频Java基础12:JavaDoc生成文档_哔哩哔哩_bilibili