目录
注释
- 单行注释: //后跟内容
- 多行注释: /* 内容*/
关键字
标识符
- Java所有的组成部分都需要名字。类名、变量名以及方法名都被成为标识符
- 所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始
- 首字符之后可以是字母(A-Z或者a-z),美元符($)、下划线(_)或数字的任何字符组合
- 不能使用关键字作为变量名或方法名
- 标识符是大小写敏感的
- 合法标识符举例: age、$salary、_value、__1_value
- 非法标识符举例:123abc、-salary、#abc
- 可以使用中文命名,但是不建议这样使用,也不建议使用拼音
数据类型
- 强类型语言:Java是一种强类型语言,要求变量的使用要严格符合规定,所有变量都必须先定义后使用(安全性高,速度较慢)
- Java的数据类型分为两大类
- 基本类型(primitive type)
- 引用类型(reference type)
字节
- 位(bit) :是计算机内部数据储存的最小单位,11001100是一个八位二进制数
- 字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示
- 1B (byte,字节) = 8bit(位)
- 字符:是指计算机中使用的字母、数字、字和符号
- 1bit表示1位
- 1Byte表示一个字节1B=8b
- 1024B=1KB
- 1024KB=1M1024M=1G
数据类型拓展
1.整数拓展
2.浮点数拓展
- float型是离散、有限的,并且会舍入误差。float型的浮点数是接近但不等于
- 最好不要使用浮点数进行比较
3.字符拓展
public class demo{
public static void main(String[] args){
char c1='a';
char c2='中';
System.out.println(c1);
System.out.println((int)c1); //强制转换,将字符转换为对应的数字
System.out.println(c2);
System.out.println((int)c2); //强制转换,将字符转换为对应的数字
}
}
char c1='\u0061'; //十六进制数表示a,将数字转换为字符
System.out.println(c1);
- 所有字符的本质还是数字,Unicode编码占用两个字节,Unicode表(a=97)
- 转义字符
类型转换
- 由于java是强类型语言,所以在进行某些运算的时候要用到类型转换
- 小数的优先级大于整数
- 运算中,不同类型的数据先转换为同一类型,然后进行运算
- 强制转换(高类型转换为低类型)
public class demo1 {
public static void main(String[] args) {
int i=125;
byte b=(byte) i; //(类型)变量名
System.out.println(i);
System.out.println(b);
}
}
- 自动转换(低类型转换为高类型)
public class demo1 {
public static void main(String[] args) {
int i=125;
float f=i;
System.out.println(i);
System.out.println(f);
}
}
- 转换中可能存在内存溢出或精度问题
public class demo1 {
public static void main(String[] args) {
int money=1000000000;
int a=20;
int total1=money*a;//-1474836480,计算的时候溢出了
long total2=money*a;//-1474836480,money和a的值默认是int类型,转换之前已经存在问题了
long total3=((long)money)*a;//先把变量类型转换为long,
//money*((long)a)与((long)money)*((long)a)都行
System.out.println(total3);
}
}
变量
- 每个变量必须声明类型
- java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
type varName [=value]
//数据类型 变量名 =值,可以使用逗号隔开来声明多个同类型变量。
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型
- 变量名必须是合法的标识符
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束
局部变量
- 使用前必须声明和初始化,在方法中使用,如:
public class demo1 {
public static void main(String[] args) {
int a=1; //局部变量
}
}
实例变量
- 在类里面,方法外面使用;从属于对象;如果不自行初始化,就是这个类型的默认值(如0 0.0)
- 除了基本类型,其余的默认值都是null
public class demo1 {
String str="Hello World" //实例变量
public static void main(String[] args) {
}
}
类变量
- 在类里面,方法外面使用;使用时加上关键字static
public class demo1 {
static int allClicks=0; //类变量
public static void main(String[] args) {
}
}
常量
- 初始化后不能再改动值,即值被设定后,在程序运行过程中不允许被改变;可以理解为特殊的变量
- 常量名一般使用大写字符
final 常量名=值;
final double PI=3.14;
//修饰符不分前后顺序,常量通过final定义
变量的命名规范
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则:monthSalary除了第一个单词以外,后面的单词首字母大写lastname lastName
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:Man, GoodMan
- 方法名:首字母小写和驼峰原则:run(), runRun()
运算符
- 算术运算符:+,-, *,l,%(取余),++,--
- 赋值运算符:=
- 关系运算符:>,<,>=,<=,==,!=,instanceof
- 逻辑运算符:&&(与),||(或),!(非)
- 位运算符: &,|,^,~,>>,<<,>>>(了解! ! ! )
- 条件运算符:?,∶
- 扩展赋值运算符:+=,-=,*=,/=
自增自减
public class Demo3 {
public static void main(String[] args) {
int a=3;
int b = a++;//表示先把a的值赋值给b,然后a再自增1 此时相当于省略一句a=a+1;
//即此时b=3,a=4
int c = ++a;//表示a先自增1然后再赋值给c
//即此时a=c=5
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
位运算符
A=0011 1100
B=0000 1101
A&B=0000 1100 (都为1才是1)
A|B = 0011 1101 (一方为1即为1)
A^B= 0011 0001 (相同为0,相异为1)
~B=1111 0010 (取反)
<< 位左移(相当于这个数*2)
>> 位右移(相当于这个数/2)
如:
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16
2<<3 值为16
字符串连接符
int a = 10;
int b = 20;
System.out.println(""+a+b);
//输出值为1020,a与b的值拼在一起了
System.out.println(a+b+"");
//输出值为30,此时按顺序先运算a+b了
条件运算符
x ?y:z
//如果x==ture,则结果为y,否则结果为z
如:
int score=80;
String type=score<60 ? "不及格":"及格";
//运行结果为及格