学习笔记01
两年前学的Java,现在已经忘得差不多了,跟着狂神说Java的视频从头开始学,希望能救一救ww
一、JDK JRE JVM
1. JDK
java development kit
2. JRE
java Runtime Environment
3. JVM
java virtual machine
二、java代码编写
public class Hello{//类
public static void main(String[] args){//main方法
System.out.println("Hello World!");//输出
}
}
三、java程序运行机制
-
编译型
一下子全部编译完成,对操作系统要求低,c,c++
-
解释型
一点一点解释/编译,
java源文件通过javac命令预编译为class文件
四、idea
1. IDE
集成开发环境
2. 安装
参考
五、Java基础语法
1. 注释 标识符 关键字
1. 注释
注释是一个非常好的习惯
2. 关键字
3. 标识符
标识符不能使用关键字,且大小写敏感,能用中文但不推荐。
2. 数据类型
1. 强类型语言
要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用(安全性高)
java c++
2. 弱类型语言
3. Java的数据类型分为两大类
- 基本类型
- 数值类型
- boolean类型
//八大基本类型
int num1 = 10;//4字节
byte num2 = 20;//1字节
short num3 = 30;//2字节
long num4 = 30L;//8字节 Long类型要在数字后面加L
//小数:浮点数
float num5 = 50.1F;//4字节
double num6 = 3.1415936535;//8字节
//字符
char name = 'A';//2字节
//字符串 String 不是关键字,而是类
String namea = "tyrantblue";
//布尔值
boolean flag = true;//占1位,8位等于1字节
//boolean flag1 = false;
类型扩展
public class Demo03 {
public static void main(String[] args) {
//整数拓展: 进制 二进制0b 十进制 八进制0 十六进制x
int i = 10;
int i1 = 010;
int i2 = 0x10;
int i3 = 0b10;
System.out.println(i);
System.out.println(i1);
System.out.println(12);
System.out.println(i3);
System.out.println("===================================================");
//浮点数拓展: 银行业务如何表示?
//BigDecimal
//======================================================================
//float 有限 离散 舍入误差 大约 接近但不等于
//double
//最好避免完全使用浮点数去比较
//最好避免完全使用浮点数去比较
//最好避免完全使用浮点数去比较
float f = 0.1f;//0,1
double d = 0.1;//0.1
System.out.println(f==d);//false
float d1 = 23475932458739475384f;
float d2 = d1 + 1;
System.out.println(d1==d2);//true
//=============================================================
//字符拓展
//=============================================================
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);
}
}
遇到了输出中文乱码的问题,参考这篇文章解决了
所有的字符本质都是数字,存在一个Unicode表,占两字节,用\u来转义
//转义字符
// \t 制表符
// \n 换行符
// ......
System.out.println("Hello world!");
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
//对象 从内存分析
//布尔值扩展
boolean flag = true;
if(flag==ture){}//新手
if (flag){}//老手
//Less is more! 代码要精简易读
- 引用类型
- 类
- 接口
- 数组
4. 类型转换
-
由于java是强类型语言,所以要进行有些运算的时候,需要用到类型转换
由低到高
byte, short, char->int->long->float->double
-
运算中,不同类型的数据先转化为同一类型,然后进行运算。
-
小数的优先级一定大于整数
public class Demo05 {
public static void main(String[] args) {
int i = 128;
byte b = (byte)i;//内存溢出,byte大小为2字节
System.out.println(b);//-128
//强制类型转换 (类型)变量名 高-->低
//自动转换转换 低-->高
/*
注意点:
1. 不能对布尔类型进行转换
2. 不能把对象类型转换为不相干的类型
3. 在把高容量转化为低容量时,用强制转换
4/ 转换的时候可能存在内存溢出,或者精度问题!!!
*/
System.out.println("======================================");
System.out.println((int)23.7);//23
System.out.println((int)-45.89f);//-45
System.out.println("======================================");
char c = 'a';
int d = c+1;
System.out.println(d);//98
System.out.println((char)d);//b
}
}
- 溢出的一些问题
public class Demo06 {
public static void main(String[] args) {
//操作比较大的数时,注意溢出问题
//JDK7的新特性(我已经更到JDK19了(= = ) 数字之间可以用下划线分割
int money = 10_0000_0000;
int years = 23;
int total = money*years;//1525163520, 已经溢出了
System.out.println(total);
long total2 = money*years;//1525163520, 溢出了再转换没有用
System.out.println(total);
long total3 = money*(long)years;//23000000000,先转换为long类型就不会溢出
System.out.println(total3);
}
}
3. 变量 常量
1. 变量
- 变量就是可以变化的量
- Java是一种强类型语言,每个变量都必须声明其类型
- Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
type varName [=value] [{,varName[=value]}];
//数据类型 变量名 = 值 ; 可以使用逗号隔开来声明多个同类型变量
- 注意事项:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型
- 变量名必须是合法的标识符
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束
public class Demo07 {
public static void main(String[] args) {
//int a=1,b=2,c=3;不建议一行定义多个变量 //注意程序可读性
int a=1;
int b=2;
int c=3;
String name = "tyrantblue";
char x = 'X';
double pi = 3.14;
}
}
2. 变量作用域
- 类变量
- 实例变量
- 局部变量
public class Demo08 {
//属性:变量
//实例变量:从属于对象;如果不初始化,会赋为这个类型的默认值 0或0。0
//布尔值默认值为false
//除了基本类型,其余默认值为null
String name;
int age;
//类变量 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);
//类变量 static
System.out.println(salary);
}
//其他方法
public void add(){
//System.out.println(i);
//不能输出
}
}
3. 常量
- 常量是初始化后不能再改变的值,是不会变动的值
- 常量可以理解为一种特殊的变量,它的值被设定后,在程序运行的过程中不允许被改变
- 常量名一般使用大写字符
public class Demo09 {
//修饰符不存在先后顺序
//final 常量名=值;
static final double PI = 3.14;
public static void main(String[] args) {
System.out.println(PI);
}
}
4. 变量的命名规范
- 所有变量、方法和类名要见名知意
- **类成员变量:首字母小写和驼峰原则:moonthSalary 除了第一个单词外后面的单词首字母大写 **
- 局部变量:首字母小写和驼峰原则
- 常量:使用大写字母和下划线
- 类名:首字母大写和驼峰原则:Man,GoodMan
- 方法名:首字母小写和驼峰原则:run(), runRun()
4. 运算符
- java语言支持如下运算符
- 算数运算符: +, -, *, /, %, ++, --
- 赋值运算符: =
- 逻辑运算符: >, <, >=, <=, ==, !=, instanceof
- 位运算符: &&, ||, !
- 条件运算符: &, |, ^, ~ ,>>, <<, >>>
- 扩展赋值运算符: +=, -=, *=, /=
1. 算数运算符
package operator;
//二元运算符
public class Demo01 {
public static void main(String[] args) {
//Ctrl + D :复制当前行到下一行
int a = 10;
int b = 10;
int c = 10;
int d = 10;
System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
System.out.println(a / b);
}
}
2. 算数运算符拓展
package operator;
public class Demo02 {
public static void main(String[] args) {
long a = 12312414353523142L;
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
//有Long那么一定是Long,有Double一定是Double
//其他有无int结果都是int
}
}
3. 关系运算符
package operator;
//关系运算符返回的结果: 正确 or 错误 用boolean
public class Demo03 {
public static void main(String[] args) {
//if
int a = 10;
int b = 20;
int c = 41;
System.out.println(a > b);//false
System.out.println(c > b);//true
//取余运算符 % 求模
System.out.println(b % a);//0
System.out.println(c % a);//1
}
}
4. 自增自减
package operator;
//++ -- 自增,自减 一元运算符
public class Demo04 {
public static void main(String[] args) {
int a = 3;
int b = a++;//先赋值后自增
//a++ ==> a=a+1,
System.out.println(a);//4
int c = ++a;//先自增后赋值
//++a ==> a=a+1
System.out.println(a);
System.out.println(b);
System.out.println(c);
//幂运算2^3 2*2*2 = 8
double pow=Math.pow(2, 3);
System.out.println(pow);
}
}
5. 逻辑运算符
package operator;
//逻辑运算符
public class Demo05 {
public static void main(String[] args) {
//与(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;
System.out.println("a && b: "+ (a&&b));//逻辑与运算,两个都为真结果才为true
System.out.println("a || b: "+ (a||b));//逻辑或运算,两个有一个为真结果就为true
System.out.println("!(a && b): "+ !(a&&b));//假变真,真变假
//短路运算
int c = 5;
boolean d = (c<4)&&(c++<4);//如果前面已经短路后面就不会执行
System.out.println(c);//5
System.out.println(d);//false
}
}
6. 位运算
package operator;
public class Demo06 {
public static void main(String[] args) {
/*
A = 0011 1100
B = 0000 1101
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001// 异或:相同为0,不同为1
~B = 1111 0010
2*8 = 16怎么运算最快?
<< >>左移右移
<< 左移代表*2
>> 右移代表/2
0000 0000 0
0000 0001 1
0000 0010 2
0000 0100 4
0000 1000 8
0001 0000 16
*/
System.out.println(2<<3);//16
}
}
7. 扩展运算符
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);//10
//字符串连接符 + ,String在 + 前面,后面的都会转换成String进行连接
//String在 + 后面,前面会进行算数运算
System.out.println(""+a+b);//1020
System.out.println(a+b+"");//30
}
}
8. 三元运算符
package operator;
public class Demo08 {
public static void main(String[] args) {
// x ? y : z
//如果x==true, 则结果为 y, 否则结果为 z
//必须掌握,可以让代码更加精简
int score = 80;
String type = score < 60 ? "不及格":"及格";//及格
System.out.println(type);
}
}
这里遇到了控制台输出中文全是问号的情况,应该是编码的问题,但试过了网上的方法都不太行,最后解决方法是将jdk换回以前的版本,我之前的jdk版本为19,换回jdk1.8然后再把编码调成UTF-8.
- 优先级用括号更加清楚明了
5. 包机制
- 包的本质就是文件夹
- 一般利用公司域名倒置作为包名
遇到了空包直接折叠的情况,解决方法为Project右边的设置,取消勾选Compact Middle PacKages
- 为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包,使用”import“语句可以完成此功能
import com.xxx.xxx;
import com.xxx.*;//*是通配符,代表导入该包下所有的类
package语句要在代码最前面
尽量不要让包里面的名字重复
6. JavaDoc
- Javadoc命令是用来生成自己API文档的
- 控制台生成如下
D:\Code\java\javaSE\基础语法\src\com\tyrantblue\base>javadoc -encoding UTF-8 -charset UTF-8 Doc.java
- 如何用idea生成javadoc
参考如下
标签:Java,String,int,System,笔记,学习,println,public,out From: https://www.cnblogs.com/tyrantblue/p/17162947.html