疯狂Java基础Day1
——每过一遍基础,都是一次提升!
太多遗忘了,慢慢补。。。
推一个Java学习教程--->b站搜:狂神说Java系列(排序完毕)
推荐原因:讲的不错,会涉及到底层,也会讲讲面试。
一、注释
主要掌握单行注释、多行注释和JavaDoc文档注释
谨记在心的两句话:
- 书写注释是一个好习惯
- 写代码必须注意规范
/**
* @author 我在吃大西瓜呢
* (JavaDoc文档注释)
*/
public class HelloWorld {
public static void main(String[] args) {
// 输出一个hello world (单行注释)
/* 输出一个hello world (多行注释)*/
System.out.println("Hello World!");
}
}
二、标识符和关键字
类名、变量名、方法名都被称为标识符
注意点:
- 所有标识符必须以字母、美元符$、下划线_ 开始,首字符后随意,但为了规范,建议用好English
- 不能使用关键字作为变量名或方法名
- 标识符大小写敏感
关键字:(不认识不要紧,慢慢积累)
三、数据类型
Java是强类型语言,要求变量的使用要符合规定,所有变量必须先定义,后使用。
因此,安全性高,但速率较低。鱼与熊掌不可兼得焉!
首先了解什么是字节?
- 位(bit):是计算机内部数据存储的最小单位,11001100是一个八位二进制数
- 字节(byte):是计算机中数据处理的基本单位,习惯上用大写B表示
- 1 byte = 8 bit
- 字符:计算机中使用的字母、数字、字和符号
一些转换关系:
- 1 B = 8 b
- 1024 B = 1 KB
- 1024 KB = 1 M
- 1024 M = 1 G
- 1024 G = 1 TB
八大基本数据类型:
public class Demo1 {
public static void main(String[] args) {
//八大基本数据类型
//整数
byte num1 = 10;
short num2 = 500;
int num3 = 6666; //常用
long num4 = 999999999L; //long类型一般在数字后面加L
//小数
float num5 = 9.6F; //float类型一般在数字后面加F
double num6 = 66.99;
//字符
char name = 'W';
//字符串(引用类型)
//String id = "我在吃大西瓜呢";
//布尔值
boolean flag1 = true;
boolean flag2 = false;
}
}
相关拓展:
public class Demo2 {
public static void main(String[] args) {
//整数拓展: 进制 二级制0b 十进制 八进制0 十六进制0x
int i = 10;
int i2 = 010;
int i3 = 0x10;
System.out.println(i); //10
System.out.println(i2); //8
System.out.println(i3); //16
System.out.println("===============================================");
//=================================================================
//浮点数拓展: 问--->有关银行业务怎么表示?
// 答--->BigDecimal数学工具类
//因为float是有舍入误差
//example1:
float f = 0.1f; //0.1
double d = 1.0/10; //0.1
System.out.println(f==d); //false
//example2:
float d1 = 12345678998765f;
float d2 = d1+1;
System.out.println(d1==d2); //true
System.out.println("===============================================");
//=================================================================
//字符拓展 强制转换
//所有的字符本质还是数字 参考Unicode编码表
char c1 = 'a';
char c2 = '我';
System.out.println(c1);
System.out.println((int)c1); //97
System.out.println(c2);
System.out.println((int)c2); //25105
char c3 = '\u0061';
System.out.println(c3); //a
//转义字符 (百度一下!)
// \t 制表符
// \n 换行
System.out.println("===============================================");
//=================================================================
//布尔值拓展
boolean flag = true;
//以下表示方法一样 less is more!
//if(flag==true){}
//if (flag){}
}
}
四、类型转换
Java是强类型语言,故有些运算时需要用到类型转换
public class Demo3 {
public static void main(String[] args) {
int i = 128;
//强制转换 (类型)变量名 高->低
byte b = (byte)i;
//自动转换 低->高
double d = i;
System.out.println(i); //128
System.out.println(b); //-128 内存溢出
System.out.println(d); //128.0
/*
注意:
1.不能对布尔值进行转换
2.不能把对象类型转换为不相干的类型
3.高--->低 强制转换
4.转换时可能存在溢出问题或者精度问题
*/
}
}
关于溢出问题:操作比较大的数时,要注意溢出问题
public class Demo4 {
public static void main(String[] args) {
int money = 10_0000_0000; //JDK7的新特性
int years= 30;
int sum1 = money*years; //-64771072溢出
long sum2 = money*years; //-64771072,默认是int,转换之前已存在问题
long sum3 = money*(long)years; //30000000000
}
}
五、变量、常量、作用域
1、变量
注意事项:
- 每个变量都有类型
- 变量名必须为合法的标识符
2、常量
常量(constant):初始化后不能再改变值!
常量名一般用大写字母
final double PI = 3.14;
3、变量作用域
public class Demo5 {
//类变量 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); //10
//变量类型 变量名
Demo5 demo5 = new Demo5();
System.out.println(demo5.age); //0
System.out.println(demo5.name); //null
//类变量 static
System.out.println(salary); //2500
demo5.method(); //100
}
//其他方法:
public void method(){
int i = 100; //局部变量
System.out.println(i);
}
}
一些命名规范:重要指数五颗星★★★★★
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则(monthSalary)
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线(MAX_VALUE)
- 类名:首字母大写和驼峰原则(Boy、GoodBoy)
- 方法名:首字母小写和驼峰原则(run()、toRun())
六、基本运算符
1、算术运算符
public class Demo6 {
public static void main(String[] args) {
//二元运算符
int a = 10;
int b = 20;
int c = 25;
int d = 25;
System.out.println(a+b); //30
System.out.println(a-b); //-10
System.out.println(a*b); //200
System.out.println(a/(double)b); //0.5
System.out.println(a%b); //10
}
}
值得理解指数五颗星★★★★★
public class Demo8 {
public static void main(String[] args) {
//一元运算符
int a = 3;
int b = a++; //先给b赋值,再自增
//a++ a = a+1
System.out.println(a); //4
//++a a = a+1
int c = ++a; //先自增,再给c赋值
System.out.println(a); //5
System.out.println(b); //3
System.out.println(c); //5
}
}
2、关系运算符
public class Demo8 {
public static void main(String[] args) {
//关系运算符返回结果: true or false
int a = 10;
int b = 20;
System.out.println(a>b); //false
System.out.println(a<b); //true
System.out.println(a==b); //false
System.out.println(a!=b); //true
}
}
3、逻辑运算符
public class Demo9 {
public static void main(String[] args) {
//逻辑运算符
//与 and 或 or 非(取反)
boolean a = false;
boolean b = true;
System.out.println("a && b :"+(a&&b)); //false
System.out.println("a || b :"+(a||b)); //true
System.out.println("!(a && b) :"+(!(a&&b))); //true
//短路运算
int c = 5;
boolean d = (c<4)&&(c++<4); //c<4必然错了,故短路
System.out.println(d);
System.out.println(c); //5,因为不实现自增
}
}
4、位运算符
public class Demo10 {
public static void main(String[] args) {
/*
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 与B完全相反
问: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);
}
}
5、条件(三元)运算符
public class Demo11 {
public static void main(String[] args) {
//x ? y : z
//若x==true,则结果为y,否则为z
int score = 80;
String type = score < 60 ? "不及格" : "及格";
System.out.println(type); //及格
}
}
6、扩展运算符
public class Demo12 {
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); //10
//------------------------------------------------------
System.out.println("----------------------------------");
//字符串连接符 +
System.out.println(""+a+b); //1020
System.out.println(a+b+""); //30
}
}
七、包机制
一般利用公司域名倒置作为包名
如:www.baidu.com
package com.baidu
Java中导入包机制:import (IDEA现在一般会自动导入)
八、JavaDoc生成文档
JavaDoc命令是用来生成自己API文档的
- @author 作者名
- @version 版本号
- @since 指明需要最早使用的jdk版本
- @param 参数名
- @return 返回值情况
- @throws 异常抛出情况