一、注释、标识符、关键字
1、注释
- 书写注释是一个非常好的习惯。
- 平时写代码一定要规范。
public class HelloWorld {
public static void main(String[] args){
System.out.println("Hello World!");
}
}
//单行注释
/*
多
行
注
释
*/
//JavaDoc:文档注释
/**
* 现在用不到
*/
2、标识符
- 关键字
- Java所有组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
- 所有的标识符都应该以字母,美元符,下划线或数字的任何字符组合。
- 不能使用关键字作为变量名或方法名
- 标识符可以使用中文命名,但不建议。
二、数据类型
- 强类型语言:所有变量必须先定义后才能使用。(Java)
- 弱类型语言:没有严格的要求。(JS)
- Java的数据类型分为两大类
基本数据类型
数值类型
byte,1字节,-128 ~ 127
short,2字节,-32768 ~ 32767
int,4字节,-2147483648 ~ 2147483647
long,8字节,-9223372036854775808 ~ 9223372036854775807
false,4字节
double,8字节
char,2字节
布尔类型:占一位,其值只有true和false。
引用数据类型:类,接口,数组,日后学。
int num1 = 10;
byte num2 = 20;
short num3 = 30;
long num4 = 30L;
float num5 = 50.1F;
double num6 = 3.141592653589793238462643;
char name = 'A'
String name = "lisi";
什么是字节?
- 位(bit):是计算机内部数据存储的最小单位,11001100是一个八位二进制数。
- 字节(byte):是计算机中数据处理的基本单位,习惯用大写B来表示。
- 1B = 8bit
- 字符:是指计算机中使用的数字,字母,字和符号。
1bit表示一位 1Byte表示一个字节 1B = 8b。 1024B = 1KB 1024KB = 1M 1024M = 1G
进制问题
public class 进制问题 {
public static void main(String[] args){
//整数拓展: 进制 二进制0b 十进制 八进制0 十六进制0x
int i = 10;
int i2 = 010;
int i3 = 0x10;
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
}
}
//浮点型都是有误差的,有范围的,是离散的,接近但不等于。
//因此最好不要使用浮点数进行比较。
float f = 0.1f;
double d = 1.0/10;
System.out.println(f == d); //false
float d1 = 232465134165423151321354165f;
float d2 = d1 + 1;
System.out.println(d1 == d2); //true
强转问题
public class 强转问题 {
public static void main(String[] args){
char c1 = 'a';
char c2 = '中';
System.out.println(c1);
System.out.println((int)c1); //97
System.out.println(c2);
System.out.println((int)c2); //20013
//Unicode编码,2字节,65536个字符,2^16
char c3 = '\u0061';
System.out.println(c3); //a
}
}
类型转换
-
由于java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。
-
低–>高
byte,short,int,long,float,double
-
运算中,不同类型的数据先转化为同一类型,然后进行运算。
-
强制类型转换
-
自动类型转换
public class 类型转换 {
public static void main(String[] args){
int i = 128;
//byte b = i; //报错,需要byte,给的int
byte b = (byte)i; //强制转换,高-->低
System.out.println(b); //内存溢出,-128
double c = i;
System.out.println(c); //128.0
/*
注意点:
1、不能对布尔进行转换
2、不能把对象类型转换为不相干的类型。
3、大容量转换为小容量,强制转换,强转的时候可能存在内存溢出,精度问题。
*/
char c1 = 'a';
int d = (int)c1 + 1;
System.out.println(d); //98
System.out.println((char)d); //b
}
}
- 类型转换遇到的精度溢出的问题
public class 类型转换遇到的问题 {
public static void main(String[] args){
//操作比较大的数的时候,注意溢出问题
//JDK7新特性,数字之间可以用下滑线分割。
int money = 1000000000;
int money1 = 10_0000_0000;
int years = 20;
int total = money*years;
long total2 = money*years;
System.out.println(total+","+total2);//负数,精度溢出,years是int类型
long total3 = money*((long)years);//先把一个整数转换为long
System.out.println(total3);//200亿
}
}
三、变量,常量,作用域
1、变量
- 变量是什么?就是可以变化的量。
- Java是一种强类型语言,每个变量都必须声明其类型。
- Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
注意事项:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
- 变量名必须是合法的标识符。
- 变量声明必须是一条完整的语句,因此每一个声明都必须以分号结束。
2、变量的作用域
- 类变量
- 实例变量
- 局部变量
public class 三大变量 {
//类变量
static double salary = 2500;
//属性:变量
//实例变量:从属于对象,如果不自行初始化,这个类型默认值0,0.0 null
//布尔值:false。
String name;
int age;
//main方法
public static void main(String[] args){
int i; //局部变量:必须声明和初始化,只在改方法里有效。
// System.out.println(i); 报错
//变量类型 变量名
三大变量 sdbl = new 三大变量();
System.out.println(sdbl.name);
System.out.println(salary);
}
//其他方法
public void add(){
}
}
- 常量
fianl 数据类型 常量名 = 常量值
final double PI = 3.14;
3、变量的命名规范
- 所有的变量,方法名,类名:见名知意
- 类成员变量:首字母小写和驼峰原则
- 局部变量:首字母小写和驼峰原则:lastName
- 常量:纯大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:Man,GoodMan
- 方法名:首字母小写和驼峰原则:run(),runRun()
四、运算符
- 算数运算符:+,-,*,/,%,++,–
- 赋值运算符:=
- 关系运算符:>,<,>=,<=,==,!=,instanceof
- 逻辑运算符:&&,||,! 与,或,非
了解
- 位运算符:&,|,^,~,>>,<<,>>>
- 条件运算符:? :
- 拓展赋值运算符:+=,-=,*=,/=。
public class 位运算 {
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 取反
2*8怎么运算最快
2*2*2*2
>>位运算 *2
<< /2效率高
*/
}
}
三元运算符
public class 三元运算符 {
public static void main(String[] args){
int a = 10;
int b = 20;
a+=b; //a = a + b
a-=b;
//字符串连接符"加"
System.out.println(""+a+b); //1020
System.out.println(a+b+""); //30
//三元运算符
//x ? y : z
//如果x为真,则结果为y,否则为z。
int score = 80;
String type = score < 60 ? "不及格" : "及格";
System.out.println(type);
}
}
五、包机制
- 为了更好的组织类,Java提供了包机制,用于区别类名的命名空间。
- 包语句的语法格式为:
package pkg1.pkg2.pkg3...
- 一般利用公司域名倒置作为包名。
- 为了能够使用某一个包的成员,我们需要在Java程序中明确带入该包。使用import语句可以完成此功能。
import package1.package2.classname
import package1.*导入这个包下所有的类。
六、JavaDoc
- javadoc命令是用来生成自己API文档的。
- 参数信息
@author 作者名
@version 版本号
@since 指明需要最早使用JDK的版本
@param 参数名
@return 返回值的情况
@throws 抛出异常情况
public class JavaDoc {
/**
* @outhor kuangshen
* @version 1.0
* @since 1.8
*/
public class Doc{
String name;
/**
* @outhor kuangshen
* @version 1.0
* @since 1.8
* @throws Exception
*/
}
public String test(String name) throws Exception{
return name;
}
}