1 、Java语言特点
面向对象(贴近人类思维模式,模拟现实世界,解决现实问题)
简单性(自动内存管理机制,不易造成内存溢出;简化流程处理)
跨平台(操作系统,服务器等)
2、Java执行机制
先解释、再编译:
- 将源文件编译成字节码文件(平台中立文件.class),再将字节码文件进行解释执行
- Java的设计理念:Write Once Run Anywhere
3、名词解释
JVM 虚拟机
- 使用软件在不同的操作系统中,模拟Java运行的环境。
JRE 运行环境
- 包含JVM和解释器,包含了Java运行环境的核心库类,完整的Java运行环境。
JDK 开发环境
- 包含了各种Jaa开发工具包,以及JRE。
4、第一个Java应用程序
class HelloWorld{
public static void main (String[] args){
System.out.println("Hello World");
}
}
5、类的阐述
- 同一个源文件中可以定义多个类。
- 编译后,每个类都会生成独立的 .class文件。
- 一个类中,只能有一个主方法,每个类都可以有自己的主方法。
- public修饰的类称为公开类,要求类名必须与文件名完全相同,包括大小写。
- 一个源文件中,只能有一个公开类。
6、编码规范 书写格式
- 层级之间必须缩进(Tab:一个制表位)
- 一行只写一句代码
package demo; public class H{ public static void main(String[] args){ System.out.println("Hello"); System.out.println("World"); } }
6、编码规范 代码注释
单行注释:
- //单行注释
多行注释
- /*多行注释*/
文档注释(生成外部文档:javadoc -d . HelloWorld.java)
- /** 文档注释*/
注:注释不参与编译
7、编码规范 标识符命名
语法规定:
- 可以由:字母、数字、_、$组成,但不能以数字开头
- 不能与关键字、保留字重名。
约定俗成:
- 类名由一个或者多个单词组成,首个单词字母大写(pascal)
- 函数名、变量名由一个或者多个单词组成,首单词首字母小写,拼接词首字母大写。
- 包名全小写,只可以使用特殊字符".",并且不以"."开头或者结尾
- 常量全大写,多个单词用_连接。
8、关键字概述
被Java语言赋予特定含义的单词
- HelloWorld案例中,出现的关键字有public、class、static、void等,这些单词已经被Java定义好,全部都是小写字母,
9、常量概述
常量:是指在Java程序中固定不变的数据。整数常量 : 所有的整数; 0,1 , 567 , -9小数常量: 所有的小数; 0.0 , -0.1 , 2.55字符常量 :单引号引起来,只能写一个字符,必须有内容 ; ‘a’, ' ', '好字符串常量 :双引号引起来的内容,可以写多个字符,也可以不写 ;“A” , "hello" , "你好 " , “”布尔常量 :只有两个值(流程控制中讲解); true , false空常量 :只有一个值(引用数据类型中讲解);null
10、进制概述以及转换
进制:就是进位制,是人们规定的一种进位方法。 对于任何一种进制--X进制,就表示某一位置上的数运算时是逢X进一位。二进制就是逢二进一,八进制是逢八进一,十进制是逢十进一,十六进制是逢十六进一。不同进制的组成规则
- 二进制
由0,1组成。以0b开头
- 八进制
由 0 , 1 , ...7 组成。以 0 开头
- 十进制
由 0 , 1 , ...9 组成。整数默认是十进制的
- 十六进制
由 0 , 1 , ...9 , a , b , c , d , e , f (大小写均可),以 0x 开头十进制转到其他进制
- 通过十进制推出结论
- 把52分别表示成二进制,八进制,十六进制
(除基取余,直到商为0,余数反转)
十进制和二进制的快速转换
- 8421码
8421 码是中国大陆的叫法, 8421 码是 BCD 代码中最常用的一种。在这种编码方式中每一位二值代码的1 都是代表一个固定数值,把每一位的 1 代表的十进制数加起来,得到的结果就是它所代表的十进制数码。二进制和八进制,十六进制如何转换
- 以十进制为桥梁
- 二进制到八进制 3位组合
- 二进制到十六进制 4位组合
有符号位的数据表示法在计算机内,有符号数有 3 种表示法:原码、反码和补码。所有数据的运算都是采用补码进行的。
- 原码
就是二进制定点表示法,即最高位为符号位, “0” 表示正, “1” 表示负,其余位表示数值的大小
- 反码
正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
- 补码
正数的补码与其原码相同;负数的补码是在其反码的末位加 1 。
11、变量和数据类型
变量:常量是固定不变的数据,那么在程序中可以变化的量称为变量。
Java 的数据类型分为两大类:
- 基本数据类型:包括 整数、浮点数、字符、布尔。
- 引用数据类型:包括 类、数组、接口。
四类八种基本数据类型:
- 字节型:byte
- 短整型:short
- 整型:int
- 长整型:long
- 单精度浮点数:float
- 双精度浮点数:double
- 字符型:char
- 布尔型:boolean
注意:在同一个大括号范围内,变量名不能相同。定义的变量需要初始化值。
12、数据类型转换
自动转换 :将取值范围小的类型自动提升为 取值类型大的范围。public static void main(String[] args) { int i = 1; byte b = 2; // byte x = b + i; // 报错 //int类型和byte类型运算,结果是int类型 int j = b + i; System.out.println(j); }
强制类型转换 :将取值范围大的类型 强制转换成 取值范围小的类型。public static void main(String[] args) { //short类型变量,内存中2个字节 short s = 1; /*出现编译失败 s和1做运算的时候,1是int类型,s会被提升为int类型s+1后的结果是int类型,将结果在赋值会short类型时发生错误 short内存2个字节,int类型4个字节 必须将int强制转成short才能完成赋值 */ s = s + 1;//编译失败 s = (short)(s+1);//编译成功 }
13、运算符
算术运算符:+、-、*、/、%、++、--
赋值运算符:= , +=, -=, *=, /=, %== 为基本的赋值运算符,其他的为扩展的赋值运算符关系运算符:==、!=、>、<、>=、<=逻辑运算符:&、|、^、!、&&、||“&”和“&&”的区别:
- 单&时,左边无论真假,右边都进行运算。
- 双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别同理,双或时,左边为真,右边不参与运算。异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。
- &:有false则false
- |:有true则true
- ^:相同false,不同true
- !:非false则true,非true则false
- &&,||和&以及|的区别,结果相同,但是有短路效果,一般建议使用&&,||
位运算符:>>、<<、>>>、&、|、^ 、~
三目运算符:
- 格式:
( 关系表达式 )? 表达式 1 :表达式 2 ;如果条件为 true ,运算后的结果是表达式 1 ;如果条件为 false ,运算后的结果是表达式 2 ;
- 示例
获取两个数中大数。public class Test { public static void main(String[] args) { int a= 3; int b=4; int c = (a>b)?a:b; System.out.println("最大值为"+c); } }
14、键盘录入数据
实现步骤:
- 1. 导包(位置放到class定义的上面)
import java.util.Scanner;
- 2. 创建对象
Scanner sc = new Scanner(System.in);
- 3. 接收数据
int x = sc.nextInt();
15、流程控制语句
if 语句格式 1:if( 关系表达式 ){语句体 ;}if 语句格式 2:if( 关系表达式 ) {语句体 1;}else {语句体 2;}if 语句格式 3if( 关系表达式 1) {语句体 1;}else if ( 关系表达式 2) {语句体 2;}…else {语句体 n+1;}例: 商场根据会员积分打折,
2000分以内打9折,
4000分以内打8折
8000分以内打7.5折,
8000分以上打7折,
使用if-else-if结构,实现手动输入购物金额和积分,计算出应缴金额;public class Test { public static void main(String[] args) { Scanner S =new Scanner(System.in); System.out.println("请输入一个整数值:"); int a = S.nextInt(); if (a>0 && a<=2000 ){ System.out.println("打九折!"); }else if (a>2000 && a<=4000){ System.out.println("打八折!!"); }else if (a>4000 && a<=8000){ System.out.println("打7.5折!!!"); }else if(a>8000){ System.out.println("打七折!!!!!"); }else{ System.out.println("输入数据存在错误,请重新输入...."); } } }
switch 语句switch语句格式: switch(表达式) { case 值1: 语句体1; break; case 值2: 语句体2; break; … default: 语句体n+1; break; }
例:(switch 语句)录入一个整数,如果是1~5 之间,则分别输出5 个福娃的名
字,否则输出“北京欢迎你”。public class Test { public static void main(String[] args) { Scanner S =new Scanner(System.in); System.out.println("请输入一个整数值:"); int a = S.nextInt(); switch (a){ case 1: System.out.println ("团团"); break; case 2: System.out.println("圆圆"); case 3: System.out.println("欢欢"); break; case 4: System.out.println("迎迎"); break; case 5: System.out.println("妮妮"); break; default: System.out.println("北京欢迎你!!!"); break; } } }
case具有穿透性:
在 switch 语句中,如果 case 的后面不写 break ,将出现穿透现象,也就是不会在判断下一个 case 的值,直接向后运行,直到遇到break ,或者整体 switch 结束。循环语句for 循环语句格式 :for( 初始化表达式① ; 布尔表达式② ; 步进表达式④ ){循环体③}例:打印九九乘法表public class Test { public static void main(String[] args) { int i = 0; int j = 0; for(i=1; i<=9; i++) { for(j=1; j<=i; j++) { //print是不换行输出;而println是换行输出。该处使用print输出 System.out.print(i + "*" + j + "=" + i*j + "\t"); } System.out.println(); } } }