例:实现输出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.java1.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 源文件中的类名相同。
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 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的幂数 |-十进制转换为二进制 除以二取余数