java基础复习(二)

一、 基本语法

 

  1. 如果一个源文件中什么内容都没有,编译会不会生成 字节码文件?不会
  2. 如果一个类中没有主方法(如下图),编译运行会怎么样?编译可以通过,但运行报错

  : 没有主方法

  

  主方法   

  是一个特殊的方法 ,是程序的入口,JVM开始执行的地方

 

   3.我们的代码最小的存在单位是

  

  

    1)   主方法(方法)  叫结构性的代码  后面是不需要;  (分号)【规范要求】

    

 

    2) 功能执行语句,例如 打印语句  后面必须加上;

    类中不能够写功能执行语句, 例如打印语句

    

  4.所有的标点符号都必须是英文状态下的

  

  5.Java代码中是严格区分大小写

  6.字节码文件的名字和类名一致,建议源文件名字和类名一

  7.一个Java源文件中可以写多个并列的类,编译完毕之后会生成多个独立的字节码文件

        建议 在实际开发中一个java文件中只写一个类

  8.一个类可以使用public修饰

  如果一个类使用public修饰,必须和源文件名字一致,而且我们一般也只会在一个java文件里写一个类,不建议写多个类。

  一个源文件中,至多只能有一个类可以被public修饰

二、 Java注释

  1.写法:

  1) //  单行注释,注释一行(是以行终止符为准)

  2) /*     */    多行注释,可以注释多行 

  每一行前面都加* 只是为了好看

  3) /**   */  文档注释,效果很像多行注释,也可以注释多行,特点 :可以通过一个命令javadoc 把文档注释中的内容生产文档

  注意 :单行注释   多行注释不能 相互嵌套

  2.写的时间:

  写代码时候养成写注释的习惯--》 代码的可读性增强

 

  1) 思路  流程 

 

  2) 关键代码

 

  3) 类的整体描述; 字段  方法  构造方法前面都会写注释

 

三、 分隔符

 

分号(;):语句的分割,表示一句话结束,好比咱们使用的句号。

 

花括号({}):表示一个代码块,是一个整体,花括号要成对使用。

 

方括号([]):定义数组和访问数组元素时使用。

 

圆括号(()):使用很广泛,具体用到细讲。

 

圆点(.):类和对象访问它的成员时使用。

 

空格( ):把一整条语句分割成几段,空格的次数不限制。

 

一般单词之间一个空格就可以了

 

注意:必须都是半角下的英文符号。

 

四、保留字和关键字

Java关键字 Java语言设计之初,被赋予特殊意义的单词。

通常用来程序控制错误处理基本类型,方法和变量修饰符……等等

共同点:

所有的字母全部小写

public

class

boolean

break

byte

case

catch

char

assert

const

continue

default

do

double

else

enum

extends

final

finally

float

for

goto

if

implements

import

instanceof

int

interface

long

native

new

package

private

protected

abstract

return

strictfp

short

static

super

switch

synchronized

this

throw

throws

transient

try

void

volatile

while

 

详见   java关键字文档

这些是否是关键字?Class  System  String

保留字goto  const   java中现在还没有赋予它特殊意义,以后可能会用,预留起来

 

 

标识符:为了增强程序的阅读性而自定义的名称。比如:类名,方法名,变量名等

       标识符的命名规则:

所有的标识符都应该以字母(A-Z或者a-z,美元符($)、或者下划线(_),数字(不能以数字开头)开始

关键字不能用作标识符

u 标识符是大小写敏感的

合法标识符举例:age$salary_value

非法标识符举例:123abc-salary

书写建议:

ü 一般来说都是取一些有意义的单词

ü 类名首字母必须大写

ü 方法名,变量名 首字母小写

ü 如果是有多个单词组成,后面每一个单词首字母大写(驼峰法命名)

小结:关键字是语言本身给定义的,而标识符是我们自己来命名的,这些单词都是为了让我们能够更好的理解程序,统一大家的认知,使得程序员之间、程序员与机器之间都能够良好的沟通。条条框框虽多,但是都值得遵守。 

 

 

 五、数据类型

1. 数据类型概述

123,3.14

java中不同类型的数据有不同的数据类型,看看下面的数据类型的分类:

分类:

一、基本数据类型  *8  java预定义的类型(原生数据类型)

  1.整数类型 *4  123
  byte  1个字节8
  short  2字节16
   int    4字节32
  long   8字节64

  2.小数类型(浮点类型) *2  3.14
  float 单精度 4字节32
  double 双精度 8字节64

  3.字符类型 *1
  char 2字节16位  ‘A’,’B’

  4.布尔类型*1

  boolean 俩值 true ,false

二、引用数据类型
  类,数组,接口,枚举……

  

  备注:浮点型就是小数类型。

  Java中每个变量都有一种类型,类型限制了变量可以是哪些值,举个例子:

 

2. 进制(了解即可)

 

  1) 10进制 (逢101

 

  其中的符号可以是 0 1 2 3 4 5 6 7 8 9    10

 

  2) 2进制  (逢21

 

  其中的符号可以是 0 1   110等于10进制的2    第一位1 ==2*12*2 第二位1==2

 

  3) 8进制 (逢81

 

  其中的符号可以是0 1 2 3 4 5 6 7   10等于10进制的8

 

  4) 16进制(逢161

 

  其中的符号可以是0 1 2 3 4 5 6 7 8 9 A B C D E F  11等于10进制的17

 

                 进制转换: 100000

 

   

 

 

3.基本数据类型8种)

  1、整型

 

   

  

  为什么会有不同大小的类型举个例子比如存 5 这个数据怎么存的?

  1. byte(8位,-2^8--2^8-1范围是-128127)  
  2. short16位,-32768—32767)
  3. int32位,-2147483648—2147483647)
  4. long (64位,-9223372036854775808—9223372036854775807)

  注意:给long赋值时,因为整数默认是int类型,要转换为long类型的值,后面加上lL

  上面的byte short int long 最大长度可以通过jdk文档去找到 具体的范围。

  • 同一个整数可以使用不同的进制表示:

  默认的进制10进制

  二进制: 0b 或者 0B开头

  八进制: 0开头

  十六进制: 0X (0x) 开头

  上面输出的是 10进制

  Java7 开始 支持数字之间用 _ 分割

  2、浮点型(小数型)

  

  

  A. float(单精度32直接赋值时必须在数字后加上f F

  B. double( 双精度64)

  区别:

  对于单精度浮点数,运行速度相比double更快,占内存更小,但是当数值非常大或者非常小的时候会变得不精确。

  双精度比单精度表示的位数大 精确的位数多,简单地说, float表示的小数点位数少。

  默认浮点数的类型是 double

  表现形式:

    1.   常规  3.14
    2.   科学计数法

  例如  3.14e2  3.14e-2

  注意

  表示float 类型 必须加上f 或者F

  float double  不能精确表示一个小数,例如 1.3*1.4

  例如 double num= 1.0, 是一个无限接近1.0的一个值

  那怎么更精确的表示浮点数呢?BigDecimal

  结论:浮点运算很少是精确的,只要是超过精度能表示的范围就会产生误差。往往产生误差不是 因为数的大小,而是因为数的精度。因此,产生的结果接近但不等于想要的结果。尤其在使用 float double 作精确运 算的时候要特别小心。

  3、字符

  A:char  16 [0-65535]  (2个字节,16) 。字符常量使用单引号 ‘’包裹起来。

  表现形式:

    1.   ‘A’最常用,最直观的方式
    2.   使用一个数字表示,对应有一个ASCII码表

  例如:char c = 65;//表示 ’A’ 这个字符

      可以当成一个整数来使用,什么是asscii表,就像化学元素周期表

  

  ‘A-6510进制)-4116进制)  

  怎么表示?\u0041

  特殊符号(需要使用转义符号转义)
  \’   \”   \\   \r(回车)  \n(换行) \t(制表符Tab)

  4、布尔类型

    值只有两个 true false,不能使用 0 1表示

  

4. 引用类型

  数组 ,类,接口,枚举……

  String类:

  Stringjava中已经设计好的一个类,表示的值是字符串(Java中设计的类和我们自己设计的类的性质是一样的)

  String s = “你好”;

  当String + 一起使用的时候,这时候+ 是拼接字符串的功能

  System.out.println(“你好”+2);//结果为    你好2

  int a  = 5;

  int b = 10

  System.out.println(“a=”+a+”,b=”+b); //结果为a=5,b=10

 

六、数据类型转换

  小数默认为double类型, 整数默认为int类型!

  在Java中,boolean类型与所有其他7种类型都不能进行转换。

  下面这7种数据类型,它们之间都可以进行转换,但是可能会存在精度损失或者其他一些变化:

  byte --> short char -->  int  --> long  -->  float  -->  double

  

  如果从小转换到大,(除了byte不能自动转换char ,以及char不能自动转换short)可以自动完成转换。而从大到小,必须强制转换(强制转换前必须知道被转换的值在要转换的类型范围内)

  规律:有包含关系的可以由低精度赋值给高精度。

   为什么float long 后面?

  小数(浮点数) 的存储方式,结构和整数不一样

 

1. 自动转换

 

  1) long  float  double

 

  只要两个操作数中有一个是上面类型的另一个就会被转换成相应类型并且结果也是该类型,例如:

 

  int  num = 10;

 

  double b = 10.01;

 

  double  c = num + b;

 

                  System.out.println(c);

 

 

 

  2) 如果2个操作数(包括byteshortcharint),都将会转换为int类型,并且结果也是int

 

  例如

 

     short s = 10;

 

     int num = 20;

 

    int n = num + s;

 

    System.out.println(n);

 

  byte b=3;     

 

  b=(byte)(b*3);//必须声明byte

 

  System.out.println(b);

 

  3) char类型向更高长度类型(例如整型)转换时,会转换为对应的ASCII码值,再做其他类型的自动转换

 

   例如:

 

    char  c = 'A';

 

    int num = 10;

 

    int a = c+num;

 

    System.out.println(a);

 

  需要注意的是:char型具有两个字节,其数值范围是0 ~ 2^16-1,这直接导致byte型不能自动类型提升到charcharshort直接也不会发生自动类型提升(因为值范围问题),同时,byte当然可以直接提升到short型。

 

   所以,char 不能和byte short 相互自动转换

 

  4) 特例

 

    byte  b  =  100;//可以自动转换

 

    int  k =100;

 

    byte b2 =k;//不能转换,报错

 

    我们是把一个常量直接赋值给byte变量,由于编译器能识别100,知道在byte范围之内,所以通过编译。

 

    byte b2 =k; 在编译时候,kint型,但它是一个变量,编译器不能知道变量中值是多少,所以不能隐式转换,提示你可能精度损失。

 

  5) 数据类型过长 溢出

 

    byte b = 128;//超出byte范围

 

     long intMax = int最大数(jdk文档)

    int i =10;

 

    double d = i;//相当于把i中的值又复制一份到变量d中。

 

2. 强制转换

 

  高 低会导致精度丢失,不同类型的强制转换,可能会导致精度的下降.

 

  比如说:double float  

 

示例

  int i1=123;

 

  int i2=456;

  float f1 = (float) ((i1+i2)*1.2);  //容量大的类型转换为小容量的类型时,需要加上强制转换符

 

  byte b1=1;

 

  byte b2=2;

 

  byte b3=(byte)(b1+b2); //byteshortchar在计算时首先转换为int,大容量(int)转换为小容 量的类型(byte)时要加强制转换

  short i=99;

 

  char c=(char)i;  

 

  System.out.println(c);

 

      特例

 

    int a = 129;

 

    byte b = (byte)a;

 

    System.out.println(b); // 结果为  -127

 

  如果值比long还大  ---》怎么办?

七、常量

  1. 常量介绍

 

    Java中的常量,常量就是一个固定不变的量(或者值)。例如 123,45,1.2false等。

 

    常见的分类

 

    ① 整数常量     例如:123 250,666

 

       ② 小数常量    例如:1.2,3.14

    ③ 字符串常量   例如:”12345”

 

       ④ 字符常量      例如: ‘2’,‘B’

 

       ⑤ 布尔常量     例如:true  ,false

 

   ------>上面的5中表示形式的常量都可以直接放在打印语句中打印

 

2. 常见转义字符

 

    ①\n表示换行;

 

    ②\t表示制表符,相当于Table键;

 

    ③\b表示退格键,相当于Back Space键;

 

    ④\'表示单引号;

 

    ⑤\''表示双引号;

 

    ⑥\\表示一个斜杠\

 

八、变量

  

1. 变量是什么 

 

  通俗一点,变量就是一个容器。我们对容器的概念就是它的作用是能够装一个东西。一个变量在同一时间只能存储一个数据。

  举例:

    如果我们把变量比作是酒店的房间,要存储的数据就好比要住宿的客人,我们可以根据客人的要求安排其入住“标准间”或者是“总统套房”,并且可以根据房间名字快速查找到入住客人的信息。

  同理,在 Java 程序中,我们也可以根据所需要保存的数据的格式,将其保存在指定类型的变量空间中,并且通过变量名快速定位!

  

    变量类型------数据类型

2.变量的语法 

1) 假设一个场景,现在有一个人的年龄18,希望使用一个变量存储起来,怎么做?

 

a) 必须获得一个变量容器(声明 或者定义一个变量)

 

语法格式: 数据类型 变量名;

注意: 此处的数据类型可以是Java中支持的所有的数据类型!

示例: int age;   

 

 

 

             按照刚刚的语法格式,示例 int age;    表示声明了一个变量,变量名叫age可以看成是一个空的变量(里面没有数据)

 

b) 把数据存储到变量中,使用赋值符号赋值  =

 

     先声明再赋值

 

    int age

 

    age = 18

 

    声明的时候同时赋值

 

    int age = 18;// 规范:赋值符号=两边都加上一个空格

 

     可以重复赋值

 

     age = 20;

 

c) 取出变量中的数据

 

使用(取出其中的数据)   ---》 直接使用变量即可

 

     取出值来打印         

 

System.out.println(age);

 

   错误用法:打印System.out.println(“age”);

 

      取出值参与一些运算

 

两个年龄相加

 

   错误用法:

 

    int age = 18;

 

         age2 = 10;

 

    System.out.println(age + age2);

 

      把值进行传递(后面讲了    方法   后大家再去进一步了解)

 

 记住一点,我们在使用变量的时候其实关心的还是变量盒子中的数据,变量仅仅是一个载体而已。

 

 3.变量分类

   

1) 成员变量     

  直接声明在类中的变量;

    主方法使用static修饰静态的区域如果打印成员变量报错

         

    怎么解决上面问题?

    a) 把主方法的static 去掉(但是找不到主方法)

    b) 成员变量age也使用static 修饰

 成员变量如果没有赋值,那么系统会分配默认值(不同的数据类型有不同的默认值,这点请参考数据类型);

作用域范围:

  整个类中可以访问的范围;

  可以放在方法的上面 ,也可以放在下面

 

1) 局部变量     

 

  直接声明在方法内部,比如main方法的形参 或者 大括号中

 

    作用域范围:

 

  声明在局部区域,例如方法里面大括号的范围内

 

   局部变量 必须放在使用的功能语句前面;

 

2) 区别

 

  a) 局部变量在使用之前必须得有值,试想一下一个空变量盒子你用啥呢?

 

  b) 成员变量系统会分配默认值(默认值意义不大)

 

  c) 作用域范围不同

 

3) 问题

 

  同一个作用域范围之内能不能够有两个名字一样的变量   为什么?  

 

4.总结  

变量是用来干啥的?

变量有如下的一些特点:

  1) 必须先声明变量再使用变量(先得有一个变量盒子,然后在拿来装东西);

  2)  每一个变量都有一个名字,方便使用;

  3) 都有一种数据类型,不同类型的变量盒子中装不同的数据;

提一下

  在 Java 的领域里,基本数据类型变量存的是数据本身,

  而引用类型变量存的是保存数据的内存空间地址。

  基本数据类型变量里存储的是直接放在抽屉里的东西,而引用数据类型变量里存储的是 这个抽屉的钥匙,钥匙和抽屉一一对应。

九、表达式

  

l其实就是由一系列的 常量  变量  运算符,括号()组成的一个算式,为了按照一定的运算规则计算出结果值.

举例:

          3+2

          3+5*(2+3)

  写一些表达式有什么用?  

     为了按照一定的运算规则计算出结果值

  当遇到表达式的时候,我们应该用整体思想,把它看成一个值。

  

 

 

posted @ 2019-01-03 17:32  Funkyd  阅读(335)  评论(0编辑  收藏  举报