第一讲
- javaSE:java Standard Edition
- javaME:java Micro Edition
- javaEE:java Enterprise Edition
JDK:java Development Kit(Java开发包)
JRE:java Runtime Environment(java执行环境)
JDK包含了JRE
如何查询Java版本
java -version
实现你的第一个Java程序{Hello World}
-
注:所有的Java代码,其后缀都是以Java结尾
public class Text{ public static void main {String[] args}{ System.out.println("hello world"); } }
java程序的执行过程分为两步
- 编译
Javac Text.java
- 执行
java Text
最后就会出现Hello World了
class 文件是字节码文件,程序最终执行的就是这个字节码(bytecode)文件
第二讲
java中的数据类型分为两类:
- 原生数据类型 (primitive Data Type)
- 引用数据类型 {对象类型}(Reference Type)
java中的原生数据类型共有8种
- 整型:使用int表示。
public static void mai n (String[] args){
int a;
a = 1;
System.out.println(a);
}
}
- 字节型:使用byte表示。(表示-128~127之间的256个整数)
public static void main(String[] args){
byte b = 2;
System.out.println(b);
}
}
- 短整型:使用short表示。(占比16位)
- 长整型:使用long表示。(占比64位)
- 单精度浮点型:使用float表示。所谓浮点型,指的就是小数。也叫作实数。
- 双精度浮点型:使用double表示。双精度浮点型表示的数据范围要比单精度浮点型要大。
即便double类型的值处于float类型的范围内也是不可以的。总之,能否成功赋值取决于等号右边的值的类型与等号左边的值的类型是否一致。
问:如何将double类型转换为float类型的变量?
答: 强制转换,强制转换的语法是:类型 变量名 = (类型)变量值
public static void main (String[] args){
/*第一种方法*/
float a =(float) 1.2;//强制转换
System.out.println(a);
/*第二种方法*/
float a =1.2f;//强制转换
System.out.println(a);
}
}
- 字符型:使用char表示(char是character的缩写)。所谓的字符,就是单个的字符表示,比如字母a,或中文张,外面用单引号包围上,比如char a = ‘b’; char b = ‘张’;
public static void main(String[] args){
char a = 'b';
System.out.println(a);
}
}
- 布尔类型,使用boolean表示。布尔类型只有两种可能值,分别是true或者是flase。
public static void main (String[] args){
boolean a = flase;
System.out,println(a);
}
}
可以将表示范围小的值赋给表示范围大的变量,但直接不能将表示范围大的值赋给表示范围小的变量,只能通过强制类型转换实现。
第三讲
- java中所有浮点类型默认情况下都是double。不能将double类型的值赋给float类型的变量,即便该double类型的值处于float类型的范围内也是不可以的。总之,能否成功赋值取决于等号右边的值的类型与等号左边的变量类型是否一致
- 如何将double类型的值赋给float类型的变量?
强制类型转换,将double类型的值强制转换为float类型
强制转换的语法:类型 变量名 = (类型) 变量值 - 变量在使用前必须要赋值;变量必须要声明其类型方可使用;变量在使用前必须要定义,并且只能定义一次。
第四讲
- 当有若干个变量参与运算时,结果类型取决于这些变量中表示范围最大的那个变量类型。
比如:参与运算的变量中,有整型 int , 有双精度浮点型double,有短整型short,那么最后的结果类型就是double。
public class test{
public static void main (String[] args){
int a = 1;
int b = 2;
int c = a + b;//3
int d = a - b;//-1
int e = a/b;//0
int f = a*b;//2
System.out.println(c);
System.out.println(d);
System.out.println(e);
System.out.println(f);
}
}
public static void main (String[] args){
double a = 1;//出现double都让路
int b = 2;
double c = a + b;
double d = a - b;
double e = a/b;
double f = a*b;
System.out.println(c);
System.out.println(d);
System.out.println(e);
System.out.println(f);
}
}
下面的代码中,a 和 b 都是整型,但是通过(double)a这种转换将a转换为一个匿名的变量,该变量的类型是double,但是要注意:a本身依旧是int类型,而不是double类型,这样。(double)a/b就是double类型除以int类型,结果自然是double类型。
public ststic void main (String[] args){
int a = 1;
int b = 2;
double e = (double) a/b;
System.out.println(e);
}
}
取模运算符:使用%表示。【取模的规律:取模的结果符号永远与被除数的符号相同】
public class text{
public static void main (String[] args){
int a = 5;
int b = 3;
int c = a % b;
System.out.println (c);
}
}
第五讲
- 关系运算符:大于(>),小于(<),等于(==), 不等于(!=),大于等于(>=),小于等于(<=),关系运算的结果是个boolean值。
public class text{
public static void main (String[] args){
int a = 3 ;
int b = 2 ;
boolean c = ( a>b );
System.out.println(c);
}
}
/*结果显示(true)*/
2.逻辑运算符:重点讲解两个,逻辑运算符本身也返回一个boolean值。
1)逻辑与:使用&&表示,逻辑与是个双目运算符(即有两个操作数的运算符),只有当两个操作数都为真的时候,结果才为真;其余均为假。(逻辑与表示的并且的意思)
public static void main (String[] args){
int a = 1;
int b = 2;
int c = 3;
int d = 4;
boolean e = (a < b) && (c < d);
System.out.println(e);
}
}
/*结果显示:true*/
2)逻辑或:使用||表示,逻辑或也是个双目运算符,只有当两个操作数都为假的时候,结果才为假;其余情况都为真。(逻辑或表示或者的意思)
public static void main(String[] args){
int a = 1;
int b = 2;
int c = 3;
int d = 4;
boolean e = (a<b)||(c<d);
System.out.println(e);
}
}
/*结果显示:true*/
3)关于逻辑运算符的短路特性。
-
逻辑与:如果第一个操作数为flase,那么结果肯定就是flase,所以在这种情况下,,将不会执行后面的运算了,即发现了短路现象。
-
逻辑或:如果第一个操作数为true,那么结果肯定就是true,所在在这种情况下,将不会执行逻辑或后面的运算了,即发生了短路现象
public static void main (String[] args){
int a = 1;
int b = 2;
int c = 3;
int d = 4;
int f = 5;
boolean e = (a > b)||((f = c) < d);
System.out.println(e);
System.out.println(f);
}
}
/* 结果是:true
5
*/
4)关于变量的自增与自减运算
1.关于 int b = a++,作用是将a的值先赋给b,然后再让a自增1。
2.关于 int b = ++a,作用是将a的值先自增1,然后将自增后的结果赋给b。
public class test {
public static void main (String [] args){
int a = 3;
//a += 1;//等价于 a = a + 1;
a++;
System.out.println(a);
}
}
/*结果是:4*/
public static void main (String [] args){
int a = 3;
//a += 1;//等价于 a = a + 1;
++a;
System.out.println(a);
}
}
/*结果是:4
public static void main (String [] args){
int a = 3;
//a += 1;//等价于 a = a + 1;
a--;
System.out.println(a);
}
}
/*结果是:2*/
public static void main (String [] args){
int a = 3;
//a += 1;//等价于 a = a + 1;
--a;
System.out.println(a);
}
}
/*结果是:2*/
第七讲
- java中的循环控制语句一共有三种,分别是while,do…while以及for循环。
1)while循环,形式为:
while (布尔表达式){
//待执行的代码
}
public static void main (String[] args){
int a = 1;//循环变量
int sum = 0;//存储相加后的变量
while(a <= 100){
sum += a;
a++;76
}
}
/*结果是:5050*/
2)do…while循环,形式为:
do{
//待执行的代码
}while(布尔表达式);
public static void main (String[] args){
int a = 1;
int sum = 0;
do{
sum += a;
a++;
}while(a<=100);
System.out.println(sum);
}
}
/*结果是:5050*/
while与do…while之间的区别:如果布尔表达式的第一次判断就为false,那么while循环一次也不执行;do…while循环则会执行一次。如果布尔表达式第一次判断为true,那么while循环与do…while循环等价。
3)for循环(使用最多的一种循环),形式为:
for(变量初始化;条件判断;步进){
//待执行的代码
}
for循环的执行过程:
1)执行变量初始化。
2)执行条件判断。如果条件判断结果为假,那么退出for循环,开始执行循环后面的代码;如果条件判断为真,执行for循环里面的代码。
3)执行步进。
4)重复步骤2。
public class test{
public static void main (String[] args){
int sum = 0;//存储相加后的结果
for(int i = 1; i <= 100;i++){
sum += i;
}
System.out.println(sum);
}
}
第八讲
理想面对程序对象
- break语句:经常用在循环语句中,用于跳出整个循环,执行循环后面的代码。
public class test{
public static void main (String[] args){
for(int i = 0;i < 10 ; i++){
if(5 == i){
break;
}
System.out.println(i);
}
}
}
/*结果是:
0
1
2
3
4
*/
2.continue语句:经常用在循环语句中,用于跳出当前的这个循环(或者是跳出本次循环),开始下一次循环的执行。
public class test{
public static void main (String[] args){
for(int i = 0;i < 10 ; i++){
if(5 == i){
continue;
}
System.out.println(i);
}
}
}
/*结果是:
0
1
2
3
4
6
7
8
9
*/
3.break与continue可以搭配标签使用,在实际开发中,根本没有人会将break与continue搭配标签来使用。
public class test{
public static void main (St ring[] args){
for(int i = 0;i < 3; i++){
if(1 == i){
break;
}
for (int j = 0 ; j <= i; ++j){
if(1 == j){
continue;
}
System.out.println("j="+j);
}
System.out.println("i="+i);
}
}
}
/*结果是:
j=0
i=0
*/
4.面向对象程序设计(object oriented programming;oop)
1)什么是面向对象?
在面向对象程序设计中有两个重要的概念:类(class)与对象(object)。
2)类
类是一种抽象概念,类包含了数据(通常使用名词来表示)与对数据的操纵(通常使用动词来表示)。比如说人就是一种抽象的概念,人具有姓名、年龄、身高等数据,还有吃饭、跑步等操纵数据的动作。
类包含两个内容
a)数据,数据在类中称作属性(Property或者attribute)或者叫成员变量(Member variable)
b)对数据的操纵,这种操纵再类中称作方法(method)
3)对象
对象是一种具体的概念,是类的一种具体的表现形式。比如说人是一种类,而张三、李四、王五等具体的人就是对象。
第九讲
-
面向对象程序设计的三大基本特征:继承(inheritence)、封装(Encapsulation)、多态(Polymporphism)。
-
封装:类包含了数据与方法,将数据与方法放在一个类中就构成了封装。
-
如何定义类?
修饰符 class 类的名字{ //类的内容(包含了属性与方法) }
-
方法:如何定义方法?
修饰符 返回类型 方法名称([参数一,参数二,参数三]){ //方法体 }
-
Main方法是整个JAVA程序的入口点,如果类的定义中没有main方法则程序无法执行。
class Text{ //两个整数相加 public int add(int a,int b){ return a + b; } //两个整数相- public int subtract(int a,int b){ return a - b; } //两个整数相乘 public int multiply(int a,int b){ return a * b; } //两个整数相除 public int divide(int a,int b){ return a / b; } }
-
方法定义不能嵌套,也就是说不能在一个方法中定义另外一个方法,方法只能定义在类中。
-
关于方法的执行,首先需要定义方法,接下来就可以使用方法(调用方法),当方法调用完毕后,方法可以返回值,方法到底是否返回值是由方法的定义决定的。
-
如何生成对象?通过类来生成对象(通常使用new关键字来生成对象)。
public class Person{
}
类名 变量名 = new 类名;
Person persion1 = new persion();
new之后才是对象
-
方法调用需要通过对象来完成。方法调用的形式:
对象变量.方法名([参数值一,参数值二,参数值三……])
class Text{ //两个整数相加 public int add(int a,int b){ return a + b; } //两个整数相- public int subtract(int a,int b){ return a - b; } //两个整数相乘 public int multiply(int a,int b){ return a * b; } //两个整数相除 public int divide(int a,int b){ return a / b; } public static void main (String[] args){ Text text = new Text(); int x = 6; int y = 1; int a = text.add(x,y); System.out.println(a); } }
-
关于方法的注意事项:
- 在方法定义中,方法的返回类型与return后面的变量或常量类型保持一致。
- 在方法调用时,给方法传递的参数需要与方法定义时的参数保持一致(参数个数保持一致,参数类型保持一致)。
- 方法定义时的返回类型与接收方法返回值的变量类型保持一致。
-
public int add (int a,int b){ return a + b; } 方法定义时的参数叫做形式参数。 int a = text.add(1,1); 方法调用时所赋予的具体值叫做实际参数。
-
关键字void 表示方法不返回值
class Text{ //使用void。关键字表示方法不返回值 public void output(){ System.out.println("Hello world"); } public static void main (String[] args){ Text text = new Text(); text.output(); } }
-
如果方法不返回值,那么声明方法的时候使用void关键字。在方法定义中,可以有两种情况实现不返回值:
a) 不使用return语句。
b)使用return。但return后面没有任何值或者变量,return后面只有一个分号,表示退出方法,返回到方法调用端。
return;
第十讲
-
类中的属性又叫做成员变量(member variable),属性用英文表示为property或者attribute。
-
对象(Object)又叫做实例。生成一个对象的过程又叫做实例化。
-
命名约定
a) 类:首字母大写,如果一个类名有多个单词构成,那么每个单词的首字母都大写, 中间不使用任何的连接符。比如:Person类,MemberTest类。
b)方法:首字母小写。如果一个方法由多个单词构成,那么第一个单词的所有字母全都小写,从第二个单词开始,每个单词的首字母大写。比如add,addThreeInt。
c)属性:命名约定与方法相同。比如age,ageOfPerson。
-
属性需要定义在类中,又叫做成员变量;而定义在方法中的变量叫做局部变量。
-
如何定义属性?
public class Persion{ 修饰符 类型 属性名称; }
-
如何使用属性?与方法一样,使用“.”运算符。首先需要生成类的实例,然后使用实例+“.”到方式来使用属性。
Person person = new person(); person.age
public class Persion{ int age = 20 ; public