二、java基本语法
一、标识符
java对各种变量、方法和类等要素命名时使用的字符序列成为标识符;通俗点,凡是自己可以起名字的地方都叫标识符,都遵守标识符的规则
1.标识符命名规则:
1)标识符由字符、下划线、美元符或数字组成。
2)标识符应以字符、下划线、美元符开头
3)java标识符大小写敏感,长度无限制
4)约定俗成,java标识符选取应该注意“见名知意”且不能与java语言的关键字(eclipes中带颜色的基本都是关键字)重名
合法的标识符 |
不合法的标识符 |
HelloWord | class |
DataClass | DataClass# |
_983 | 98.3 |
$6s5_c7 | Hello World |
二、关键字
java中一些赋以特定含义,用作专门用途的关键的字符串成为关键字(keyword);且大多数编辑器都会将关键字用特殊方式标出
所有java关键字都是小写英文
一些常用关键字
abstract | default | if | private | this |
boolean | do | implements | protected | throw |
break | double | import | public | throws |
byte | else | instanceof | return | transient |
case | extends | int | short | try |
catch | final | interface | static | void |
char | finally | long | stricrfp | volatile |
class | float | native | super | while |
const | for | new | switch | null |
continue | goto | package | stnchronized |
三、java的基本数据类型
1.java常量
java的常量值用字符串表示,区分为不同的数据类型。如:
整型常量:1234
实型常量:3.14
字符常量:’a’
逻辑常量:true、false
字符串常量:”HelloWorld”
注意:
1)区分字符常量和字符串常量
字符常量是单引号引起来的单个,字符串常量是双引号引起来的不限长度
由于java采用Unicode编码,每个字符占两个字节,因而可用天十六进制编码形式表示,当然也可以用一个中文表示(单个中文占用两个字节)
2)”常量”这个名次还会用在另外其他语境中表示值不可变的变量
2.java变量
java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
java程序中每一个变量都属于特定的数据类型,在使用前必需对其进行声明,声明格式为:
type varName [=value]
例如:
int i =100;
foloat f=12.3f;
double d1,d2,d3=0.123;(声明了三个变量,其中d1,d2是默认值,d3=0.123)
String s=”hello”
从本质上讲,变量其实是内存中的一小块区域,使用变量名来访问这块区域,因此,每一个变量使用前必需先声明,然后必需进行赋值,才能使用。
1)java变量分类
按被声明的位置划分:
局部变量:方法或语句块内部定义的变量,只能在被定义的方法或语句块内使用
成员变量:方法外部、类的内部定义的变量,可以在整个类中使用,包括类里的方法或语句块内也可以使用
注意:类外面是不能有变量的声明的
按所属的数据类型划分:
基本数据类型变量
引用数据类型变量
四、运算符
java语言支持如下运算符:
算术运算符:+ - * / % ++ --
关系运算符:> < >= <= == !=
逻辑运算符:! & | ^ && ||
位运算符:& | ^ ~ >> << >>>
赋值运算符:=
拓展赋值运算符:+ = -= *= /=
字符串链接运算符:+
三目条件运算符 ? :
1.算数运算符
注意:
1)
位运算符中的!、&、|、^跟罗技运算符相同,只是位运算符是对变量的二进制进行操作,我个人是用不到的,所以不在这里多做介绍
2)
++(—)
在前时先运算再取值
在后时先取值再运算
2.逻辑运算符
例如:
3.扩展赋值运算符
4.字符串连接符
“ + ”运算符两侧的操作数中只要有一个是字符串类型,系统会自动将另一个操作数转换为字符串然后进行连接,例如:
4 + 5 = 9
4 + “ab” = “4ab”
5.三目条件运算符
语法格式:
x ? y : z
其中x为boolean类型表达式,先计算x的值,若为true,则整个三目运算的结果为表达式y的值,否则整个运算结果为表达式z的值。
五、表达式和语句
1.表达式
表达式是符合一定语法规则的运算符和操作数的序列,例如:
a
5.0 + a
(a – b) * c – 4
i < 30 && i %10 !=0
1)表达式的类型和值
表达式中的操作数进行运算得到的结果称为表达式的值
表达式值的数据类型即为表达式的类型
2)表达式的运算顺序
应按照运算符的优先级从高到低的顺序进行
优先级相同的运算符按照实现约定的结合方式进行
我个人觉得运算顺序这块是可以忽略的,首先我的逻辑思维能力不是特别强,另外我的记性也不是特别好,所以如果我需要在表达式中区分优先级的话我会选择加括号。但是我觉得对于一些比较复杂且关键的逻辑运算,如果个人逻辑运算能力加记忆都比较好可以保证不出错的话,善用罗技运算符优先级未尝不是一种不让别人看懂你代码copy的手段。算是一种小小的防护吧,反正我这种人是不会去尝试分析这种代码的,太累~~
2.分支(条件)语句
if
if … else
if … else if … else if
if … else if … else if …else
switch () {
case xx:
……………
case xx:
……………
default:
……………
}
1.java中switch语句只能探测int类型的值(char类型的值也可以,因为他可以转换城int类型)
2.小心case穿透,所以最好与break连用
3.多个case可以连用,如下的示例代码也可以这样写(当i=1,2,18都会输出18):
示例:
3.循环语句
for(…;…;…){……}
while(…){……}先判断再执行大括号里面的内容,然后再判断是否要继续执行
do{……} whille(…); 先执行大括号里面的内容再判断是否要继续执行
4.break & continue语句
break语句用于终止某个语句块的执行。用在循环体语句中么可以强行退出循环
continue语句用在循环体语句中,用于终止某次循环过程,跳过循环中continue语句下面未执行的循环,开始下一次循环过程
八、方法
java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段,声明格式:
[修饰符1 修饰符2 …] 返回值类型 方法名 (形式参数列表) {
java语句
}
形式参数:在方法被调用时用于接受外界输入的数据
实参:调用方法时实际纯给方法的数据
返回值:方法在执行完毕后返回给调用他的环境的数据
返回值类型:实现约定的返回值的数据类型,如无返回值,必需给出返回值类型void
java语言中调用方法:对象名.方法名(实参列表)
实参的数目、数据类型和次序必需和所调用方法声明的形参列表匹配
return语句终止方法的运行并指定要返回的数据
java中进行函数调用传递参数时,遵循值传递的原则:
基本类型传递的是该数据值本身,引用累心美国传递的是对对象的引用,而不是对象本身
例子中的方法1,前面定义的数据类型为void, 所以方法中不能有return返回值,方法4中因为有return返回值,所以前面必需定义为返回值的类型,也就是m4前面那个int
九、递归调用
递归调用是指在方法执行过程中出现该方法本身的调用
先看一个例子,这是一个简单的递归调用:
简单分析下:
1.首先main主方法中输出字符串,内容是test方法当参数等于5的时候的返回值
2.然后将参数5传入test方法,返回值是:5 * test(4)
3.再次将参数4传入test方法中,返回值是:4 * test(3)
4.再将参数3传入test方法中,返回值是:3 * test(2)
5.再讲参数2传入test方法中:返回值是:2 * test(1)
6.再将参数1传入到方法中:返回值是:1
然后程序开始往回走,返回值传入test(1)中得到2*1
再往回走,将刚刚得到的2*1传入到test(2)中得到3*2*1
还要往回走,将刚刚得到的3*2*1传入到test(3)中得到4*3*2*1
还要往回走,将刚刚得到的4*3*2*1传入到test(4)中也就是test(5)的返回值,得到5*4*3*2*1
最后将test5的返回值传入到我们的主方法输出于语句中5*4*3*2*1=120,那么我们的输出语句输出的应该为120
这就是简单的递归调用的例子了
再来看一个例子:
非递归的写法:
请自行领悟
二、java基本语法的更多相关文章
- Java基础学习笔记二 Java基础语法
注释 注释用来解释和说明程序的文字,注释是不会被执行的. 单行注释 //这是一条单行注释 public int i; 多行注释 /* 这是 * 一段注释, * 它跨越了多个行 */ public vo ...
- java基础语法(二)--单列模式
java基础语法(二)--单列模式 /** * 功能:单列模式 * @author Administrator * */ public class SingletonTest { public sta ...
- JVM(二):Java中的语法糖
JVM(二):Java中的语法糖 上文讲到在语义分析中会对Java中的语法糖进行解糖操作,因此本文就主要讲述一下Java中有哪些语法糖,每个语法糖在解糖过后的原始代码,以及这些语法糖背后的逻辑. 语法 ...
- 062 01 Android 零基础入门 01 Java基础语法 07 Java二维数组 01 二维数组应用
062 01 Android 零基础入门 01 Java基础语法 07 Java二维数组 01 二维数组应用 本文知识点:二维数组应用 二维数组的声明和创建 ? 出现空指针异常 数组的名字指向数组的第 ...
- 010 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 04 变量的三个元素的详细介绍之二——变量类型——即Java中的数据类型
010 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 04 变量的三个元素的详细介绍之二--变量类型--即Java中的数据类型 Java中变量的三要素 变量名 变 ...
- java(二、基础语法和基本数据类型)
Java 基础语法 一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如,一 ...
- Java零基础教程(二)基础语法
Java 基础语法 一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如 ...
- Java学习日记——基础篇(二)基本语法
变量 变量和常量是程序处理的两种基本数据对象,变量是程序的基本组成单位 变量的目的就是确定目标并提供存放空间 public class Hello { public static void main( ...
- 03:Java基础语法(二)
Java基础语法 Java运算符 算术运算符 运算符是一种特殊的符号,用以表示数据的运算.赋值和比较等.1.操作数:参与运算的数据 称为操作数.2.表达式:运算符和操作数的整体 称为表达式.单独的一个 ...
- Java基础语法目录
一.Java相关科普知识1.Java的发展历程2.Java的发展方向3.Java的体系特性二.Java第一个程序1.JavaJDK的安装与环境的配置2.记事本开发Java程序的注意事项与常见问题3.J ...
随机推荐
- 【公众号系列】超详细SAP HANA JOB全解析
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[公众号系列]超详细SAP HANA JOB全解 ...
- 微信小程序发红包
背景: 近期一个朋友公司要做活动,活动放在小程序上.小程序开发倒是不难,不过要使用小程序给微信用户发红包,这个就有点麻烦 确定模式: 小程序目前没有发红包接口,要实现的话,只能是模拟红包,即小程序上做 ...
- JavaScript(二)数据类型(一)
计算机程序的运行需要对值进行操作,在编程语言中值的类型被称作数据类型,编程语言最基本的特性就是能够支持多种数据类型.当程序需要将值保存起来以备将来使用时,便将其赋值给一个变量.变量是一个值的符号名称, ...
- 【原】Java学习笔记005 - 流程控制
package cn.temptation; public class Sample01 { public static void main(String[] args) { // 程序的流程控制(流 ...
- php $$可变变量理解
//在变量前面加上两个$$,如$$name,这表示可变变量,可以动态的设置和使用,先设置一个普通变量,一个可变变量会获取了一个普通变量的值作为这个可变变量的变量名 $a = 'b'; $b = 'c' ...
- Selenium自动化测试-unittest单元测试框架使用
一.什么是unittest 这里我们将要用的unittest是python的单元测试框架,它的官网是 https://docs.python.org/2/library/unittest.html,在 ...
- .net 获取远程访问的ip
这两天一直做获取远程访问的ip和自己的ip相关的问题. 在解决获取ip相关问题的时候,主要使用了上下文对象,httpcontext对象.原理很简单,内部有两大对象,request和response.里 ...
- sbt安裝與配置
官方下載地址:https://www.scala-sbt.org/download.html?spm=a2c4e.11153940.blogcont238365.9.42d147e0iF8dhv 解压 ...
- 构建高性能服务 Java高性能缓冲设计 vs Disruptor vs LinkedBlockingQueue
一个仅仅部署在4台服务器上的服务,每秒向Database写入数据超过100万行数据,每分钟产生超过1G的数据.而每台服务器(8核12G)上CPU占用不到100%,load不超过5.这是怎么做到呢?下面 ...
- 从开始到头皮炸裂的python第5天
头皮炸裂的一天从学到一个新的数据类型开始,这个数据类型的新成员叫做字典,基本的格式为data={键:值,键:值},info.keys()表示所有的键,info.values()表示所有的值,info. ...