一、第一个Java程序
例:实现输出Hello World
class HelloChina{
public static void main(String [] args){
System.out.println("Hello World");
}
}
二、注释
|-单行注释://
|-多行注释:/* */
作用:
1.对所写的程序进行解释说明,增强可读性,方便自己,方便别人;
2.可以调试所写的代码
3.注释的内容不参与编译,编译以后生成的.class结尾的字节码文件中不包含注释信息
4.多行注释不可以嵌套使用
|-文档注释:/** */
注释内容可以被JDK提供的工具javadoc所解析,生成一套以网页文件形式体现的该程序的说明文档
例:javadoc解析:
javadoc -d myhello -author -version HelloJava.java
三、总结
1.Java程序编写-编译-运行的过程
|-编写:将编写的Java代码保存在以“.java”结尾的源文件中
|-编译:使用javac.exe命令编译java源文件,格式:javac 源文件名.java
|-运行:使用java.exe命令解释运行字节码文件,格式:java 类名
2.一个java源文件中可以声明多个class,但是,最多只能有一个类声明为public,而且要求声明为public的类的类名必须与源文件名相同。
3.程序的入口是main()方法,格式是固定的。
4.输出语句:
System.out.println("Hello World!");//先输出,后换行
System.out.print("Hello World!");//只输出
5.每个执行语句都以“;”结束。
6.编译以后,会生成一个或多个字节码文件。字节码文件的文件名与java 源文件中的类名相同。
四、Java语言特点
1.面向对象性:
|-两个要素:类、对象
|-三个特征:封装、继承、多态
2.健壮性:
|-去除了C语言中的指针
|-自动垃圾回收机制—>仍然会出现内存溢出和泄露
3.跨平台性:write once,run anywhere:一次编译,到处运行。
五、 关键字和保留字
关键字:
|-定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)
|-特点:关键字中所有字母都为小写
保留字(goto、const):现有Java版本尚未使用但以后版本可能会作为关键字使用。命名时,要避免这些保留字。
六、标识符
|-定义:Java对各种变量、方法和类等要素命名时使用的字符序列称为标识符
|-技巧:凡是可以起名字的地方都叫表示符
定义合法表示符规则:
|-由26个英文字母大小写,0-9,_或$组成
|-数字不可以开头
|-不可以使用关键字和保留字,但能包含关键字和保留字
|-Java中严格区分大小写,长度无限制
|-标识符不能包含空格
名称命名规范:
|-包名:多单词组成时所有字母都小写:xxxyyyzzz
|-类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
|-变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
|-常量名:所有字母都大写,多单词时每个单词用下划线连接:XXX_YYY_ZZZ
注意:1.见名知意 2.不建议用汉字声明
七、变量
|-包含:变量类型、变量名、存储的值
|-作用:在内存中保存数据
|-格式:数据类型 变量名 = 变量值
注意:
|-每个变量必须先声明,后使用
|-使用变量名来访问这块区域的数据
|-变量的作用域:其定义所在的一对{}内
|-变量只有在其作用域内才有效
|-同一个作用域内,不能定义重名的变量
例:
class VariableTest {
public static void main(String[] args) {
//变量的定义
int myAge = 12;
//变量的使用
System.out.println(myAge);
//变量的声明
int myNumber;
//变量的赋值
myNumber=1001;
System.out.println(myNumber);
}
}
八、数据类型
|-按照数据类型分:
|-基本数据类型:
|-整型:byte、short、int、long
|-浮点型:float(范围比long还大)、double
|-字符型:char
|-布尔型:boolean
|-引用数据类型:
|-类:class
|-接口:interface
|-数组:array
1.整型变量:
|-整型常量默认为int型,声明long型常量后面须加“l”或“L”
|-不足以表示较大的数才使用long
2.浮点型
|-默认值为double型,声明float常量,须后加‘f’或‘F’
3.char型
|-通常使用一对‘’,内部只能写一个字符
|-表示方式:1.声明一个字符 2.转义字符 3.直接使用Unicode值来表示字符型常量
4.boolean型
|-只能取两个值之一:true、false
|-常常在条件判断、循环判断中使用
例:
class VariableTest1 {
public static void main(String[] args) {
byte b1 = 12;
byte b2 =-128;
System.out.println(b1);
System.out.println(b2);
short s1 = 128;
int i1 = 1234;
long l1 = 31425689L;
System.out.println(l1);
double d1 =123.3;
System.out.println(d1 + 1);
//定义float类型的变量时,变量要以"f"或者“F”结尾
float f1 = 12.3f;
System.out.println(f1);
//定义char型变量,通常使用一对''
char c1 = 'a';
System.out.println(c1);
//表示方式:1.声明一个字符 2.转义字符 3.直接使用Unicode值来表示字符型常量
char c5 ='\n';//换行符
c5='\t'//制表符
System.out.println("hello" + c5);
System.out.println("world");
char c6 = '\0043';//使用Unicode值
System.out.println(c6);
boolean bb1 = true;
System.out.println(bb1);
boolean isMarried =true;
if(isMarried){
System.out.Println("不能参加单身partt");
}else{
System.out.println("可以参加单身part");
}
}
}
九、基本数据类型之间的运算
|-自动类型提升:当容量(数的范围的大和小)小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。
byte 、char、short —>int—> long—> float—> double
特别的:当byte 、char、short三种类型的变量做运算时,结果为int型
|-强制类型转换:自动类型提升运算的逆运算
|-需要使用强转符:()
|-注意点:强制类型转换可能会导致精度损失
例:自动类型提升
class VariableTest2 {
public static void main(String[] args) {
byte b1 =2;
int i1 =129;
//编译不通过
//byte b2 = b1 + i1;
int i2 =b1 + i1;
long l1 = b1 + i1;
System.out.println(i2);
float f = b1 + i1;
System.out.println(f);
char c1 = 'a';
int i3 = 10;
int i4 = c1+i3;
System.out.println(i4);
//***************特别的***********************
short s2 =10;
//char c2 = c1+s2;//编译不通过
byte b2 = 10;
//char c3 = c1+b2;//编译不通过
//short s3 = b2+s2;//编译不通过
//short s4 = b1+b2;//编译不通过
}
}
例:强制类型转换
class VariableTest3 {
public static void main(String[] args) {
double d1 = 12.3;
//精度损失举例1
int i1 = (int)d1;//截断操作
System.out.println(i1);
//没有精度损失
long l1 = 123;
short s2 = (short)l1;
//精度损失举例2
int i2 = 128;
byte b = (byte)i2;
System.out.println(b);
}
}
例:两个特殊情况
class VariableTest4 {
public static void main(String[] args) {
//编码情况1:
long l =123213;
System.out.println(l);
//编译失败:过大的整数
//long l2 =123456789036525;
long l2 =123456789036525L;
//编译失败
float f1= 12.3;
//编码情况2:
byte b =12;
// byte b1 = b+1;//编译失败
float f1 = b+12.3;//编译失败
}
}
十、字符串类型String
|-String不是基本数据类型,属于数据引用类型
|-使用方式与基本数据类型一致,如:String str = “abc”;
|-一个字符串可以串接另一个字符串,也可以直接串接其他类型的数据,如:
str = str + “xyz”;
int n = 100;
str = str
String类型变量的使用:
|-String属于应用数据类型,翻译为:字符串
|-声明String类型变量时,使用一对“”
|-String可以和8种基本数据类型变量做运算,且只能是连接运算:+
|-运算的结果仍然是String类型
例:String练习
class StringTest {
public static void main(String[] args) {
String s1 = "Hello World";
System.out.println(s1);
String s2 = "a";
String s3 = "";
//char c ='';//编译不通过
int number = 1001;
String numberStr="学号:";
String info =numberStr + number;//连接运算
boolean b1 =true;
String info1 = info + b1;//连接运算
System.out.println(info1);
//****************练习********************
//1.
char c = 'a';
int num = 10;
String str = "hello";
System.out.println(c+num+str);//107hello
System.out.println(c+str+num);//ahello10
System.out.println(c+(num+str));//a10hello
System.out.println((c+num)+str);//107hello
System.out.println(str+num+c);//hello10a
//2.
System.out.println("* *");//* *
System.out.println('*'+'\t'+'*');//93
System.out.println('*'+"\t"+'*');//* *
System.out.println('*'+'\t'+"*");//51*
System.out.println('*'+('\t'+"*"));//* *
}
}
十一、进制
|-所有数字在计算机底层都以二进制形式存在
|-对于整数,有四种表示方式
|-二进制:0,1,满2进1以0b或0B开头
|-十进制:0-9,满10进1
|-八进制:0-7,满8进1,以数字0开头表示
|-十六进制:0-9及A-F,满16进1,以0x或0X开头表示。此处的A-F不区分大小写,如:0x21AF+1=0X21B0
例:进制实例
class BinaryTest {
public static void main(String[] args) {
int num1 = 0b110;
int num2 = 110;
int num3 =0127;
int num4 =0x110A;
System.out.println("num1 = "+num1);//num1 = 6
System.out.println("num2 = "+num2);//num2 = 110
System.out.println("num3 = "+num3);//num3 = 87
System.out.println("num4 = "+num4);//num4 = 4362
}
}
二进制与十进制相互转换:
|-当用二进制定义整数时其第32位是符号位;
|-当是long类型时,二进制默认占64位,第64位是符号位
二进制的整数形式:
|-原码:直接将一个数值换成二进制数。最高位是符号位
|-负数的反码:是对原码按位取反,只是最高位(符号位)确定为1
|-负数的补码:其反码加1
计算机以二进制补码的形式保存所有的整数
|-正数的原码、反码、补码都相同
|-负数的补码是其反码+1
十进制、二进制互转:
|-二进制转换为十进制 乘以2的幂数
|-十进制转换为二进制 除以二取余数