java基本语法笔记

Java基础

环境

下载Java开发工具:

安装jdk(java程序开发工具包):

jdk (Java开发工具包)包含jre(Java运行环境)和jvm(java虚拟机)

 

                           

环境变量设置:

属性-->环境变量-->系统环境变量-->添加-->JAVA-HOME+根目录(方便系统中jdk版本控制)-->在path 中添加-->%JAVA_HOME%\bin(系统中可执行文件路径)-->确定

环境检查:

win+r -->java-->java -version -->javac

java文件的运行:

Java文件通过javac指令-->class文件(字节码文件),通过java指令-->JVM加载这个 类,执行main方法-->系统指令,让系统运行。

cd+文件名:跳转到此文件    cd..+文件名:跳转到上一级

Java跨平台性:

一次编译,到处运行(将Java文件编译为.class文件,就可以在不同平台运行)

问:为什么?怎样实现的?

答:我们在不同系统上安装了不同的JVM(JRE),不同的JVM将.class文件解析为不同系统的指令从而与系统进行交互

基本类型

注释:

//                  单行注释

/* */              多行注释

/** +回车     文档注释  用于说明类和方法

程序的主方法  所有java程序的入口:

按:Ctrl+shift+o 可导入包

next方法不会解析掉回车符 回车符还在内存中;解决方法:1、不用它  2、吃掉它

输入输出:

输入:

Scanner scan=new Scanner(System.in);          用完必须关掉Scanner 

输出:

System.out.println(“”);

变量与常量:

变量:

在程序中用来记录数据的量(名字),在程序运行阶段可以发生变化(可以重新赋值)的量

格式一(直接定义):数据类型  变量名 = 数据; 

格式二(间接定义):数据类型   变量名;

                                          变量名 = 数据;   

常量:

用final修饰,在程序运行时不会发生变化的量 

Java基本语法:

标识符(名字)命名规范:

(1)、标识符只能包含数字、字母、下划线_、$、(首字母不能是数字,不能是关键字,可以包含关键字,写中文不报错但是不允许)

(2)、Java大小写敏感,这就意味着标识符 Hello 与 hello 是不同的。

(3)、类名:首字母大写,如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 :MyFirstJavaClass。

(4)、方法名:以小写字母开头。如果含有若干单词,则后面的每个单词首字母大写。

(5)、变量名:首字母大写,为方便读取可使用驼峰命名法(首字母大写,其余小写)如:MyClass maxNum。

(6)、常量所有字母大写,使用_分隔每一个单词。

(7)、包名全部小写,每个包尽量使用一个单词。

(8)、所有标识符尽量做到见名知意,单词过长可使用首字母,但不能损害见名知意。

(9)、源文件名:源文件名需与类名相同。

Java修饰符:

用来修饰类中方法和属性;

主要有两类修饰符:
1、访问控制修饰符   :

 default, public , protected, private

2、非访问控制修饰符 :

final, abstract, static, synchronized

Java关键字:

注意:

Java 的 null 不是关键字,它是一个字面常量,不允许作为标识符使用。

源文件命名规则:

1、一个源文件中只能有一个 public

2、一个源文件可以有多个非 public

3、源文件的名称应该和 public 类的类名保持一致。例如:源文件中 public 类的类名是 Employee,那么源文件应该命名为Employee.java

4、如果一个类定义在某个包中,那么 package 语句应该在源文件的首行。

5、如果源文件包含 import 语句,那么应该放在 package 语句和类定义之间。如果没有 package 语句,那么 import 语句应该在源文件中最前面。

6import 语句和 package 语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明。

Java中的基本数据类型转换:

Java是一种强数据类型语言(数据类型之间的界限非常明确),在基本数据类型中,取值大的类型可以存取、记录、赋值范围小的数据类型,反之,数据范围小的数据类型不能存储数据范围大的类型。

强制类型转换 (尽量不使 用) 大转小:

在基本数据类型转换中,表示范围大的数据类型被强制转换为表示范围小的数据类型把有效位二进制从右到左一刀切(只保留有    效二进制)

隐式转换(不需要在代码中体现)小转大:

当多个数据类型参与运算时,小的数据类型会自动提升为大的数据类型。

例如:

short范围大于byte范围,就可以将byte的变量赋值给short,在这个过程中已经将byte类型转换为short类型(这就是隐式转换)

基本数据类型:

整数类型:

byte short int long   默认为int  默认值为0  整数类型可以直接赋值范围内的整数

        * byte   =1字节    -2^7---2^7-1    -128--127

        * short  =2字节    -2^15--2^15-1  

        * int    =4字节    -2^31--2^31-1

        * long   =8字节    -2^63--2^63-1

        * 使用不同的数据类型记录不同的数据范围 节省内存空间

浮点型(小数):

默认类型double  默认值:0.0  不能用于精确表示一个数值,(因为其存储数据的方式),不能用于表示金额、汇率、价格等和金钱有关的内容   推荐使用BigDecimal

(符号位+指数位+尾数位)

float    4字节   单精度浮点型   默认0.0f

float比int范围大

double  8字节   双精度浮点型   默认0.0

double比long范围大

布尔(boolean)类型 :

True/false 默认值为false  不能和任何类型转换

大小:

1个字节(数组中)/4个字节(单独使用)

字符型(char):

用来表示一个字符 char类型表示范围:0-->65535

Java使用unicode编码,使用2个字节表示一个字符

c='\u0000';//char类型的默认值

c='\uFFFF';//最大值65535ASCII打印字符:

ASCII打印字符:

‘a’ -> 97    

‘A’ –> 65     

‘0’ -> 48

转义符:

进制:

       二进制:          由0和1组成,逢2进1

       八进制:         由0~7组成,逢8进1

十进制:         由0~9组成,逢10进1

       十六进制:      由0 ~ 9和a ~ f(不分大小写)组成

运算符:

算数运算:

加 + 、减 - 、 乘 * 、除 / 、求余 %  c=a%b;正负由a(主体决定)

后缀自增自减法(a++,a--): 先进行表达式运算,再进行自增或者自减运算

前缀自增自减法(++a,--a): 先进行自增或者自减运算,再进行表达式运算。

赋值运算:  = += -= *= /= %=

比较运算符:

结果是布尔类型true/false  >  、<  、>=  、 <= 、 == 、 !=

逻辑运算符:

&&与 只有两个条件同时满足时表达式结果才为true,只要一个不满足就为false。

||或  只有A和B的结果都为false,表达式的结果才为false,只要有一个为true,结果就为true。

!非   反转结果,原来为true,现在为false。

位运算:二进制运算是最快的运算方式   例如: 8/2最快的方式  8>>1

按位运算:& 、 | 、 ^  、 ~

A&B  将A和B转换成二进制,右侧对其,上下比较,两个都为1,结果才为1

移位运算:

<<:左移  左边最高位丢弃,右边补齐0

左移运算符“<<” - 使指定值的所有位都左移规定的次数。

            左移m<<n 代表把数字m在无溢出的前提下乘以2的n次方。

           例如,5<<3 就是5乘以2的3次方,结果是40。

>>:右移  最高位是0,左边补齐0;最高为是1,左边补齐1

右移运算符“>>” - 使指定值的所有位都右移规定的次数。

右移m>>n 代表把数字m除以2的n次方,原来是正数的还是正数,负数还     是负数。

位运算注意点:

如果是单数,也就是二进制末位为1,则结果是将m除以2 的n次方的整数商。

16>>3 就是16除以2的3次方,结果是2。

15>>3 就是14(15-1)除以2的3次方,结果是1。

>>>:无符号右移 无论最高位是0还是1,左边补齐0

无符号右移运算符“>>>” 同右移,但是结果全变正数。

问:双箭头和三箭头的区别? 

答:双箭头补符号位  三箭头补零

问:&& &有什么区别

    &&是逻辑与运算a&&b就是当且仅当两个操作数均为 true时,其结果才为 true;只要有一个为零,a&&b就为零

    &是按位与运算符a&b是把ab都转换成二进制数然后再进行与的运算;

&&&可以进行true运算和false运算(逻辑运算),&&有短路现象,&没有短路现象

补充--->运算符的优先级:

 

三元运算:

流程控制

·逻辑判断:

  1. 尽量避免重复的条件判断
  2. 就算只有一行代码也要写大括号
  3. Switch   case  :匹配一个变量的值 如果某个值被匹配到就从这一行开始运行,直到代码结束或者运行到break
  4. default所有case项都不匹配才触发,可以没有default,代码顺序可以乱但        执行顺序不变

问:Switch   case可以匹配什么样的值?

答:byteshortintcharString(字符串)、枚举

long、布尔、floatdouble不可以

循环判断:

1、for 循环:

for(声明计数器; 继续循环的条件; 计数器的递增){

循环代码块 

}

2、while(){}:

3、do{}while():

  

可以得到明确循环次数用for循环      不明确循环次数用while循环

终止循环:

break  跳出循环     

continue 终止本次循环立即执行下一次循环

死循环与无限循环:

死循环:

没有明确结束条件的循环

如:while(true){}  //死循环后的代码是无效代码,不可能运行到的代码

for(;;){} //死循环

无限循环:

无限循环不是死循环,因为代码中有明确结束条件,虽然永远达不到,但代码解析后不会报错。

怎样跳出多重循环:

数组

数组的声明:

数组的使用:

数组常见异常:

使用数组的限制:

数组只能存放声明数据类型的值(对象)

数组声明(定义)后,数组的长度是不可以改变的

arry.length    是属性

打印出数组中每个元素:

方法:

具有特定功能的一段独立的代码块

方法的定义:

修饰符  返回值类型 方法名(数据类型 变量名,数据类型 变量名…..){

执行语句;(该方法要实现的功能)

       return  返回值;

}

方法的作用:

       提高代码复用性

提高代码维护性

方法的两个明确:

       1、明确参数列表

       2、明确返回值类型

方法的调用:

单独调用:方法名(参数);

如果方法的返回值类型为void时,只能使用单独调用

如果方法体有具体的返回值时使用输出调用或复制调用

输出调用:
System.out.println(方法名(参数));
赋值调用:

数据类型 变量名 = 方法(参数);

方法的重载(Overload)?:

定义:

在同一个类中,出现两个名字相同,参数列表不同(参数类型不同,数据类型不同,对应顺序位置不同)的两个方法

常见方法的返回值类型:

Byte 、short、int、long、float、double、boolean、char、

String、int[](数组)、void(无返回值)

方法使用的注意点:

1、方法与方法是平级关系,不能嵌套定义

2、方法的返回值类型与返回值要匹配

3、方法没有具体返回值,返回值类型就为void

4、void没有特殊含义,只能写在返回值类型的位置上,代表该方法没有返回值

5、当方法的返回值类型为void时,return关键字可以省略不写

方法中return关键字的作用:

1、可以返回具体数据,哪里调用返哪里

2、作为方法的结束标记,执行return这个方法就结束了,return后面的方法不会执行。

方法中void关键字的作用:

用于声明此方法不需要返回值   可以写return但是不能跟值

构造方法:

作用:

用来创建对象,并且同时给对象的属性赋值

构造方法名必须和类名一样   构造方法不能定义返回值类型

      

构造方法的调用:

特点:

构造方法的名称与类名相同。

构造方法没有返回值类型(即使是void也不需要写)。

构造方法可以重载,即在同一个类中可以有多个构造方法,但参数列表必须不同。

构造方法可以有访问修饰符,如publicprivateprotected等,默认为default(不加任何修饰符)。

如果一个类没有显式地定义构造方法,编译器会自动为该类提供一个默认的无参构造方法。如果需要其他类型的构造方法,需要显式地定义。

例如:

Set方法和get方法:

set()是给属性赋值的,get()是取得属性值的 
被设置和存取的属性一般是私有 
主要是起到封装的作用,不允许直接对属性操作 
set()get()不一定同时存在,看程序需求

实参与形参:

可变参数:   

    可变参数,必须写在参数列表最后一个

可变参数,传入的数量可变,类型不变

可变参数的使用:

修饰符 返回值类型 方法名(数据类型... 量名){ }

可变参数的限制:

一个方法只能有一个可变参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值