学Java两个多月了,准备写Java相关知识,多总结(毕竟自己也是小白),以后定期写Java相关博客,一直把Java大致体系学完。只是为了自己方便查阅,有不足可指出。

1、标准输出:

public class HelloJava {
public static void main(String[] args) {
      System.out.println("renzhiyuan学习Java");
}
}

1.1)参数:

public:表示的这个程序的访问权限,表示的是任何的场合可以被引用,这样java虚拟机就可以找到。main()方法,从而来运行javac程序。

static:表明方法是静态的,不依赖类的对象的,是属于类的,在类加载的时候main()方法也随着加载到内存中去。

void:main()方法是不需要返回值。

main:此方法是程序执行的入口。

String[] args:从控制台接收参数。

System.out.println:标准输出流(支持文件的输出)

#System.out.println();标准错误输出流

1.2)两个输出流的区别区别:

标准错误流不支持定向输出,只能立即输出。

标准输出流支持定向输出

eg:java HelloJava>>test.txt(非追加>)

1.3)常用转义字符:

//println和print区别是println会换行

// 常用的转义字符

\\  反斜杠

\'  单引号'

\"  双引号"

\b  倒退一个字符

\n  回车换行

\t  跳格(一个Tab键)

1.4)程序解释:

A:Java程序的最基本单位是类,所以我们要定义一个类。

格式:class 类名

举例:class HelloWorld

B:在类中写内容的时候,用大括号括起来。

C:Java程序要想执行,必须有main方法。

格式:public static void main(String[] args)

D:要指向那些东西呢,也用大括号括起来。

E:你要做什么呢?今天我们仅仅做了一个简单的输出

格式:System.out.println("HelloWorld");

注意:""里面的内容是可以改动的。

(2)Java程序的开发执行流程:

A:编写java源程序(.java)

B:通过javac命令编译生成.class文件

C:通过java命令运行.class文件

2、键盘录入:

2.1)案例

import java.util.Scanner;
public class JavaTest 
{
    public static void main(String[] args)
  {
Scanner scanner= new Scanner(System.in);
System.out.println("你的名字是什么?");
String name = scanner.next();
System.out.println("你家住在哪里?");
String address = scanner.next();
System.out.println("我的名字也叫" + name + address + "很高兴认识你!");
  }
}

2.2)实现流程:

A:导包

   import java.util.Scanner;

   位置:在class的上边

B:创建对象

   Scanner sc = new Scanner(System.in);

C:获取数据

3、方法:

3.1)方法:就是完成特定功能的代码块。

   注意:在很多语言里面有函数的定义,而在Java中,函数被称为方法。

3.2)格式:

   修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {

   方法体语句;

    return 返回值;

    }

修饰符:目前就用 public static。后面再详细讲解其他修饰符

返回值类型:就是功能结果的数据类型

方法名:就是起了一个名字,方便我们调用该方法。

参数类型:就是参数的数据类型

参数名:就是变量

参数分类:

实参:实际参与运算的数据

形参:方法上定义的,用于接收实际参数的变量

方法体语句:就是完成功能的代码块

return:结束方法

返回值:就是功能的结果,由return带给调用者。

3.3)两个明确:

返回值类型:结果的数据类型

参数列表:参数的个数及对应的数据类型

3.4)方法调用

A:有明确返回值的方法

a:单独调用,没有意义

b:输出调用,不是很好,因为我可能需要不结果进行进一步的操作。但是讲课一般我就用了。

c:赋值调用,推荐方案

B:void类型修饰的方法

a:单独调用

3.5)方法的注意事项

A:方法不调用不执行

B:方法之间是平级关系,不能嵌套定义

C:方法定义的时候,参数是用,隔开的

D:方法在调用的时候,不用在传递数据类型

E:如果方法有明确的返回值类型,就必须有return语句返回。

3.6)方法重载

在同一个类中,方法名相同,参数列表不同。与返回值无关。

参数列表不同:

参数的个数不同。

参数的对应的数据类型不同。

3.7)方法重载案例

不同的类型的多个同名方法的比较。

4、关键字

4.1)被Java语言赋予特定含义的单词

4.2)特点:

全部小写。

4.3)注意事项:

A:goto和const作为保留字存在。

B:类似于Notepad++这样的高级记事本会对关键字有特殊颜色标记

5、标识符

4.1)就是给类,接口,方法,变量等起名字的字符序列

5.2)组成规则:

A:英文大小写字母

B:数字

C:$和_

5.3)注意事项:

A:不能以数字开头

B:不能是java中的关键字

C:区分大小写

5.4)常见的命名规则(见名知意)

A:包全部小写

单级包:小写

举例:liuyi,com

多级包:小写,并用.隔开

举例:cn.itcast,com.baidu

B:类或者接口

一个单词:首字母大写

举例:Student,Demo

多个单词:每个单词首字母大写

举例:HelloWorld,StudentName

C:方法或者变量

一个单词:首字母小写

举例:name,main

多个单词:从第二个单词开始,每个单词首字母大写

举例:studentAge,showAllNames()

D:常量

全部大写

一个单词:大写

举例:PI

多个单词:大写,并用_隔开

举例:STUDENT_MAX_AGE

6、注释

6.1)就是对程序进行解释说明的文字

6.2)分类:

A:单行注释//

B:多行注释/**/

C:文档注释(后面讲) /** */

6.3)把HelloWorld案例写了一个带注释的版本。

后面我们要写一个程序的过程。

需求:

分析:

实现:

代码体现:

6.4)注释的作用

A:解释说明程序,提高了代码的阅读性。

B:可以帮助我们调试程序。

7、常量

7.1)在程序执行的过程中,其值不发生改变的量

7.2)分类:

A:字面值常量

B:自定义常量(后面讲)

7.3)字面值常量

A:字符串常量 "hello"

B:整数常量12,23

C:小数常量12.345

D:字符常量'a','A','0'

E:布尔常量true,false

F:空常量null(后面讲)

7.4)在Java中针对整数常量提供了四种表现形式

A:二进制由0,1组成。以0b开头。

B:八进制由0,1,...7组成。以0开头。

C:十进制由0,1,...9组成。整数默认是十进制。

D:十六进制由0,1,...9,a,b,c,d,e,f(大小写均可)组成。以0x开头。

8、进制转换

8.1)其他进制到十进制

系数:就是每一个位上的数值

基数:x进制的基数就是x

权:对每一个位上的数据,从右,并且从0开始编号,对应的编号就是该数据的权。

结果:系数*基数^权次幂之和。

8.2)十进制到其他进制

除基取余,直到商为0,余数反转。

8.3)进制转换的快速转换法

A:十进制和二进制间的转换

8421码。

B:二进制到八进制,十六进制的转

9、数据类型

9.1)Java是一种强类型语言,针对每种数据都提供了对应的数据类型。

9.2)分类:

A:基本数据类型:4类8种

B:引用数据类型:类,接口,数组。

9.3)基本数据类型

A:整数占用字节数(字节是计算机中最小的计量单位)

byte1     -128~127

short2     -32768~32767

int 4     -2147483648~2147483647

long8     

B:浮点数

float4

double8

C:字符

char2

D:布尔

boolean1

注意:

整数默认是int类型,浮点数默认是double。

长整数要加L或者l。

单精度的浮点数要加F或者f。

10、数据类型转换

10.1)boolean类型不参与转换

10.2)默认转换

A:从小到大

B:byte,short,char -- int -- long -- float -- double

C:byte,short,char之间不相互转换,直接转成int类型参与运算。

10.3)强制转换

A:从大到小

B:可能会有精度的损失,一般不建议这样使用。

C:格式:

目标数据类型 变量名 = (目标数据类型) (被转换的数据);

10.4)思考题和面试题:

A:下面两种方式有区别

float f1 = (float)12.345;

                  float f2 = 12.345F;

                  f1其实是通过一个double类型转换过来的,而f2本身就是个float类型。

B:下面的程序有问题吗,如果有,在哪里呢?

byte b1 = 3;

byte b2 = 4;

byte b3 = b1 + b2;

byte b4 = 3 + 4;

C:字符参与运算

是查找ASCII里面的值

'a'97

'A'65

'0'48

System.out.println('a');

System.out.println('a' + 1);

D:字符串参与运算

这里其实是字符串的连接

System.out.println("hello"+'a'+1);

System.out.println('a'+1+"hello");

System.out.println("5+5="+5+5);

System.out.println(5+5+"=5+5");

11、变量

11.1)在程序的执行过程中,其值在某个范围内可以发生改变的量

11.2)变量的定义格式:

A:数据类型 变量名 = 初始化值;

B:数据类型 变量名;

 变量名 = 初始化值;

12、运算符(掌握)

12.1)算术运算符

A:+,-,*,/,%,++,--

B:+的用法

a:加法

b:正号

c:字符串连接符

C:/和%的区别

数据做除法操作的时候,/取得是商,%取得是余数

D:++和--的用法

a:他们的作用是自增或者自减

b:使用

**单独使用

放在操作数据的前面和后面效果一样。

a++或者++a效果一样。

**参与操作使用

放在操作数的前面:先自增或者自减,再参与操作

int a = 10;

int b = ++a;

放在操作数的后面:先参与操作,再自增或者自减

int a = 10;

int b = a++;

12.2)赋值运算符

A:=,+=,-=,*=,/=,%=等

B:=叫做赋值运算符,也是最基本的赋值运算符

int x = 10; 把10赋值给int类型的变量x。

C:扩展的赋值运算符的特点

隐含了自动强制转换。

面试题:

short s = 1;

s = s + 1;

short s = 1;

s += 1;

请问上面的代码哪个有问题?

12.3)比较运算符

A:==,!=,>,>=,<,<=

B:无论运算符两端简单还是复杂最终结果是boolean类型。

C:千万不要把==写成了=

12.4)逻辑运算符

A:&,|,^,!,&&,||

B:逻辑运算符用于连接boolean类型的式子

C:结论

&:有false则false

|:有true则true

^:相同则false,不同则true。

情侣关系。

!:非true则false,非false则true

&&:结果和&是一样的,只不过有短路效果。左边是false,右边不执行。

||:结果和|是一样的,只不过有短路效果。左边是true,右边不执行。

12.5)位运算符(了解)

A:^的特殊用法

一个数据针对另一个数据位异或两次,该数不变

B:面试题

a:请实现两个变量的交换

**采用第三方变量

**用位异或运算符

左边a,b,a

右边a^b

b:请用最有效率的方式计算出2乘以8的结果

2<<3

12.6)三元运算符

A:格式

比较表达式?表达式1:表达式2;

B:执行流程:

首先计算比较表达式的值,看是true还是false。

如果是true,表达式1就是结果。

如果是false,表达式2就是结果。

C:案例:

a:比较两个数据是否相等

b:获取两个数据中的最大值

c:获取三个数据中的最大值

 //获取三个整数中的最大值。

public class JavaTest{
public static void main(String[] args){
 int x = 10;
 inty = 5;
 int z = 20;
 System.out.println(x>y? "x大于y" : "x小于y");
 int x = 10;
 int y = 5;
 int z =(x>y? x:y);
 System.out.println("z:" + z);
 //第一种方法:先比较a、b最大值,在拿a、b最大值和c比较。
  int x = 10;
  int y = 5;
  int z = 20;
  int temp = ((x>y)? x:y);
  int max = ((temp>z)? temp:z);
  System.out.println("abc最大值是:" + max);
//  第二种方法(不推荐)
  int max = (x>y)?((x>z)? x:z):((y>z)? y:z);
  System.out.println("abc最大值是:" + max);
  获取两个整数是否相同
  boolean flag = (x == y)? true:false; //不需要ture和false,因为是booleam类型。
  boolean flag = (x == y);
  System.out.println(flag);