注释
注释不会实行,写给别人看的解释。
-
单行注释 // 注释内容
-
多行注释 /星号 注释内容 星号/
-
文档注释
//输出一个Hello,world! /* 我是多行 注释 */ //JAVADOC文档注释 /** * @deprecation */
标识符
关键词
java所有名字组成部分都需要名字,类名、变量名以及方法名都被称为标识符
所有的标识符都应该已字母a-z 美元符号$ 下划线_ 开始
首字符之后是字母a-z 美元符号$ 下划线_ 或数字的任意字符组合
不能使用关键词作为变量名或者方法名
标识符大小写敏感大的
尽量不要用中文命名,或者拼音 很low
数据类型讲解
强类语言
要求变量的使用严格按照规定,所有变量必须先定义后才能使用
变量就是可以变化的量
每个变量都必须声明其类型
java变量是程序中最基础的存储单元,要素包含变量名、变量类型和作用域
type varName [=value] [{
,varName[=value]}];
//数据类型 变量名称 = 值;可以使用多个逗号来声明多个同类型变量
基本数据类型
浮点类型=小数类型
//八大基础数据类型
//整数类型
int num1 = 10000; //最常用类型
byte num2 = 20;
short num3 = 2000;
long num4 = 30L; //long类型要在数字后面加L
//小数类型:浮点数
float num5 = 50.1F; //float类型要在后面加F
double num6 = 3.1415926;
//字符
char name = '张'; //只能一个字符
//字符串 String不是关键词,是类
String name2 = "张思成";
//布尔值 值只有true和false
boolean flag = true;
boolean flag1 = false;
引用类型数据
包含类、接口和数组
数据类型拓展
import java.math.BigDecimal;
public class demo3 {
public static void main(String[] args) {
//整数拓展: 进制 二进制0b 八进制0 十进制 十六进制0x
int i = 0b10; //二进制0b
int i2 = 010; //八进制0
int i3 = 10; //十进制
int i4 = 0x10; //十六进制0x
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
System.out.println(i4);
//小数 浮点类型拓展 银行业务表示钱用,BigDecimal,不用浮点进行比较
//float 有限的表示,会有误差,接近数值但不完全等于数值
//double
//最好完全避免使用浮点数进行比较
//最好完全避免使用浮点数进行比较
//最好完全避免使用浮点数进行比较
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编码表 占用2字节 最多表示65536字符 0-65536
//97 = a
System.out.println("===================================");
//===================================
//转义字符
// \t 指标符号
// \n 换行
System.out.println("Hello\tWorld");
System.out.println("Hello\nWorld");
System.out.println("===================================");
String sa = "Hello";
String sb = "Hello";
String sc = new String( "Hello");
String sd = new String( "Hello");
System.out.println(sa==sb); //true
System.out.println(sc==sd); //false
// String sa = "Hello";从对象分析
// String sc = new String( "Hello"); 从内存分析
}
}
java中String与new String的区别
String对象的创建:
1):直接赋一个字面量: String str1 = “ABCD”;
2):通过构造器构造:String str = new String(“ABCD”);
面试题1:两种方式有什么区别,分别在内存中如何分布?
常量池:专门存储常量的地方。
编译常量池:把字节码加载进JVM的时候,存储的是字节码的相关信息(不研究)。
运行常量池:存储常量数据(研究)。
解释:
String str1 = “ABCD”;最多创建一个String对象,最少不创建String对象。如果常量池中,已经存在“ABCD”,那么str1直接引用,此时不创建String对象,否则,先在常量池先创建“ABCD”内存空间,再引用。
String str2 = new string(“ABCD”);最多创建两个String对象,至少创建一个String对象。new关键字:绝对会在堆空间创建内存区域。
String对象的空值:
1):表示引用为空(null): String str1 = null; 没有初始化,没有分配内存空间
2):字符序列为空字符串:string str2 = ""; 已经初始化,分配内存空间,不过没有内容。
类型转换
1.运算中,不同类型的数据先转化为同一类型,再运算
- 强制转换 (类型)变量名 高范围值——低范围值
- 自动转化 低范围值——高范围值
public class demo {
public static void main(String[] args){
int i = 128;
double b = i ;//给i进行重新定义为byte
//强制转换 (类型)变量名 高范围值——低范围值
//自动转化 低范围值——高范围值
System.out.println(i);
System.out.println(b);
/*
注意点:
1.不能对布尔值进行转换
2.不能把对象类型转换成不相干的类型
3.高到低转换,强制转换
4.转换时候可能存在内存溢出,或者精度问题
*/
System.out.println((int)23.7);
System.out.println((int) 10.23f);
char a = 'a';
int c = a+1;
System.out.println(c);
System.out.println((char) c);
//操作比较大的数字时候,注意溢出问题
int money = 1000000000;
int years = 20;
int total = money*years;//-1474836480 计算的时候溢出且为负数
long total2 = money*years;//money*years默认是int,计算之前已存在问题
long total3 = money*(long)years;//先把一个变量定义为long 或者一开始就设置为long
System.out.println(total2);
}
}
变量
变量就是可以变化的量,每个变量都要声明其类型
变量是最基本的存储单元,其要素包括变量名,变量类型和作用域
type varName [=value] [{
,varName[=value]}];
//数据类型 变量名称 = 值;可以使用多个逗号来声明多个同类型变量
每个变量都有类型,基本类型或者引用类型
变量名是要合法的标识符
变量声明是要合法的语句,每个声明以分号结尾
变量作用域
- 类变量
- 实例变量
- 局部变量
public class demo2 {
//属性=变量
//类变量 static
static double salary = 2500;
//实例变量:从属于对象,如果不进行初始化,则输出为类型的默认值 0 0.0
//布尔值默认是false
//除了基本类型,其余的默认值都是null
String name;
int age ;
//main方法
public static void main(String[] args) {
int i = 10;//局部变量,只在方法当中存在,必须声明和初始化
//变量类型 变量名字 = new demo2();
demo2 demo2 = new demo2();
System.out.println(demo2.age);
System.out.println(demo2.name);
//类变量 static
System.out.println(salary);
}
}
常量:初始化后不能再改变的值,不会再变动的值
值被设定后,程序运行过程中不允许被改变
常量名一般用大写字符
//final 常量名 = 值
final double PI = 3.14;
变量的命名规范
运算符
运算符优先级()
% 是取余数的意思
!= 是不等于的意思
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rhG7F8T8-1647052008687)(C:\Users\xfwl-z\AppData\Roaming\Typora\typora-user-images\image-20220304160614635.png)]
算术运算符
package operator;
public class Domo01 {
public static void main(String[] args) {
//二元运算法
// CTRL+D 复制当前行到下一行
int a = 10;
int b = 20;
int c = 30;
int d = 40;
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 Demo04 {
public static void main(String[] args) {
// ++ -- 自增 自减 叫做一元运算符
int a = 3;
int b = a++;//++在后,先赋值,再增加 先将a的值赋给b,再将a的值加1,此时,a为4,b为3
int c = ++a;//++在前,先增加,再赋值 先将a的值加1,然后赋值给b,此时,a值为4,b值为4
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
不同类型的算术运算符
package operator;
public class Demo02 {
public static void main(String[] args) {
long a =123411l;
int b = 123;
short c = 10;
byte d = 8;
double e = 0.1;
System.out.println(a+b+c+d);//Long
System.out.println(b+c+d);//int
System.out.println(c