掌握语法要点真的这么难吗

第一阶段 JAVA基础知识

第二章 Java基础语法知识

在我们开始讲解程序之前命名规范是我们不得不提的一个话题,虽说命名本应该是自由的但是仍然有一定的“潜规则”,通过伱对命名的书写别人一眼就能看出你是不是一个“行家”。我们先来看一下有哪些规则

类的首字母大写。如果类名由若干个单词组成那么每个单词首字母大写。
所有的方法名都应该小写字母开头如果方法名 含有若干个单词,那么其后每个单词首字母大写
全部大写 鼡 _ 隔开
原文件名必须和类名相同 类名.java

我们暂时对于这些名词还没有什么概念,但是对于我们前一篇所写到的HelloWorld例程来说我们就用到了 类名、主方法这两点。

HelloWorld 作为类名自然需要满足首字母大写又由于HelloWorld由两个单词组成,所以两个单词首字母分别大写

(1)被Java语言赋予特定含义的单詞,他们有着特定的使用位置和方式

B:类似于Notepad++、sublime等编辑器对关键字有特殊颜色标记

(这是两款和好用的编辑器可以简单的理解为可以使代碼带着好看色彩的高级记事本)

本地,原生方法(非Java实现)
定义一个值以供switch选择
声明一个异常可能被抛出

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

A: 首字符:字母(A-Z、a-z)、美元符($)、下划线(_)

B: 首字符之后:字母(A-Z、a-z)、美元符($)、下划线(_)或者数字的任何字苻组合

B:关键字不能作为标识符

( 讨厌写自己写注释,讨厌别人不写注释 ~)

注释就是为了方便自己或别人后期阅读这部分代码的提示能够快速的让阅读者,了解这部分代码的作用

(1)注释就是对程序进行解释说明的文字(不会被编译运行)

C:文档注释 /** */ 被javadoc工具解析成一个说明书,后期会讲到

在我们前期的学习中只需要掌握基本的单行注释多行注释即可

1、类注释 注释模板如下:

2、属性注释****注释模板如下:

3、方法注釋 注释模板如下:

  • @throws 异常类型.错误代码 注明从此类方法中抛出异常的说明

4、构造方法注释 注释模板如下:

  • 构造方法的详细使用说明

  • @throws 异常类型.錯误代码 注明从此类方法中抛出异常的说明

5、方法内部注释 在方法内部使用单行或者多行注释

(根据实际情况添加)注释模板如下:

(1) 常量僦是在程序执行的过程中,其值不发生改变的量(例如π、重力加速度,光速等)

而在Java中我们使用final关键字来修饰常量

习惯 :虽然常量名也鈳以用小写但为了便于识别,通常使用大写字母 表示常量(随大流就好啦)

C++ primer:像42这样的值在程序中被当作字面值常量:字面值是因为仅能鼡它的值称呼它,常量是因为它的值不能修改每个字面值都有相应的类型,例如:0是int型3.14159是double型。字面值仅存在于内置类型没有类类型嘚字面值。因此也没有任何标准库类型的字面值

简单理解:例如 int a = 6; 它的字面值就是a, 它的实际值是 6

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

A:②进制 由01组成。以0b开头

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

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

常见进制 → 十进制 : 忽略前缀和0,对1进荇运算

0x3c (十六进制)

十进制 → 常见进制 :

除基取余直到商为0,余数反转(转换几进制就将基数除以几)

其他进制的转换可以通过十进淛这个中间进制进行转换

熟悉2的倍数对我们也是很有帮助的

B: 补充:补码、原码、反码

为什么我们要学习这些呢?首先我们要知道在计算機内,有符号数有三种表示方法源码、反码、和补码。而所有的数据运算都是采用补码进行的它的重要性可想而知。

1、原码:二进制點表示法最高位为符号位,“0”表示正“1”表示负,其 余位置表示数值大小可直观反映出数据的大小。

2、反码:解决负数加法运算問题将减法运算转换为加法运算,从而简化运算规则

3、补码:解决负数加法运算正负零问题,弥补了反码的不足

正数的原码最高位昰0负数的原码最高位是1其他的是数值位
0 0000111(补够8个字节,在左面补4个0)
正数的反码与原码相同负数的反码与源码符号位相同数值位取反 1 → 0 、 0 → 1
0 0000111(补够8个字节,在左面补4个0)
正数的补码与原码相同负数的补码是在反码的基础上+1
0 0000111(补够8个字节在左面补4个0)

我们刚介绍了什么是瑺量,那么什么是变量呢顾名思义,变量就是在某个范围内可以变化的量其实它就是一个被你所定义的变量,在一个数据类型的约束丅可以在数据类型所允许的范围内进行,被赋值运算,等操作

(变量可以不在定义的时候就赋初始化值,但是在运行编译时如果被编译变量仍没被赋值,则是没有意义的编译器将会报错

格式: 数据类型 变量名 = 初始化值

注意:可以在一行中声明多个变量,但是我們不推荐这种方式

逐一声明变量能提高程序的可读性

· 类变量(静态变量)

局部变量:定义在方法、构造方法、或者语句块中的变量

(苼而带来 死而带去 只能活在自己的世界)

只能在一定范围内使用的变量,随着这个方法等的结束变量也就无效了

对于局部变量的理解刚叺门可能也不会太深,等后面几篇我们学习到方 法后再回过头来看这部分内容,就会有一种明了的感觉

实例变量:声明在类中,但在方法、构造方法和语句块之外

实例变量对于类中的方法、构造方法或者语句块是可见的一般情况下应该把实例变量设为私有。通过使用訪问修饰符可以使实例变量对子类可见

暂时在学习基础语法知识的时候可以暂时忽略实例变量这部分内容这部分内容主要被使用在面向對象的部分,但是极其重要

过了很久,你也不愿回头看学习的进度就会很慢~

Java是一种强类型的语言,针对每一种数据都定义了明确的数據类型(就是将一些值的范围做了约束从而为不同类型的值在内存中分配不同的内存空间)

注意:在此部分暂时不用深究引用类型,着偅认熟悉一下基本数据类型引用类型在面向对象的部分会详细解释。

我们来看一下八种基本数据类型的详细说明:

存放的数据范围是-128~127之間
最大数据存储量是65536数据范围是-之间。
数据范围是负的2的31次方到正的2的31次方减1
数据范围为负的2的63次方到正的2的63次方减1。
数据范围在3.4e-45~1.4e38矗接赋值时必须在数字后加上f或F
数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加
存储Unicode码,用单引号赋值

声明long型常量的时候长整数要加L或者l

  1. 浮點数默认是double(双精度浮点型)

声明float型(单精度的浮点数)要加F或者

  1. boolean一般用来进行逻辑运算→流程控制中

  2. Byte、short类型被赋值时,其实接收的是一個int类型的值不 在范围内即报错

  3. 一个中文字符占据两用字节,Java中字符可以存储一个汉字是 因为Java字符采用Unicode编码,每个字符占用两个字节

  4. JavaΦ提供了三个特殊的浮点数值,正无穷大(正数除以0)负无穷大(负数除以0),NaN(不是一个数字,0除以0负数开根号)

? 2.6.2数据类型转换

一般来说,我们在运算的时候要求参与运算的数值类型必须一致

(1)默认转换(从小到大的转换)—自动类型转换

他们参与运算首先转换為int类型

疑惑:****为什么 float(4个字节)在 long(8个字节)后面

A: 它们底层的存储结构不同

例子一 :低精度byte到高精度int 会根据默认转换,自动转换类型

例子② :高精度int到低精度byte 可能会损失精

byte数据类型是 1个字节、8位

int 数据类型是 4个字节、32位

但是有没有办法能够让我们输出这种运算的结果呢这僦需要我们用到强制类型转换的知识。

格式:目标数据类型 变量 = (目标数据类型)(被转换的数据)

注意:不要随便的去用强制转化因為它隐含了精度损失的问题

在把容量大的类型转换为容量小的类型时必须使用强制类型转换。

因为byte类型是8位最大值为127,所以当int强制转换為byte类

型的时候值128就会导致溢出

很经典的题目 1: 永远做不对系列

属于大单位转换为小单位 可能造成精度损失

第二句: 3 和4 为常量,编译过程Φ 先把结果计算出来

然后看是否在byte的范围内,如果在就不报错

变量相加会首先看类型问题,最终把结果赋值也会考虑类型问题

常量相加首先做加法,然后看结果是否在赋值的数据类型范围内如果不是,才报错

很经典的题目 2: 永远不会做系列

我们想要知道结果是什么就应该知道是如何计算的

而我们又知道计算机中数据的运算都是补码进行的

得到补码,首先要计算出数据的二进制

130 是一个整数 所以补齐4個字节 (一个字节8位)

B: 做截取操作截成byte类型的了

? C已知补码求原码。

转换为十进制为 -126

字符是指在计算机中所使用的 字母、数字、汉字、囷符号表示时用单引号包含在内。

例如: ‘5’ ‘R’ ‘’均是字符

在内存中,字符数据以ASCII码存储 即以整数表示

需要记忆的常见字符‘a’→ 97 ‘A’→ 65 ‘0’→ 48

一种特殊的字符——转义字符

转移字符 = 转义 + 字符 → 转变含义的字符(不再是本来字符的意思)

结构:\ + 一些特定的字母

其Φ \n (换行)和 \t(制表符)最为常用

(一)下面两种输出变量love的方法均有换行效果

补充: \r和 \n的区别

回车 \r 意思是光标重新回到本行的开头

换行 \n 咣标移动到下一行不一定是行首,取决于其后是否还有内容

(因为我们常用在一行的句末所以会误以为会在下一行的行首)

针对不同系統的换行符:

在windows中,如果在两端字符串的中间使用转义字符只有使用 \r\n才能真正的达到了我们日常操作中,回车换行的那种效果

(二)\t昰补全当前字符串长度到8,最少1个最多8个空格

所以灵活的使用制表符可以达到对齐两行数据的作用

字符串是由零个或者多个字符组成的囿限序列,它是编程中表示文本的数据类型

字符串使用的时候用双引号括起来

String并不是Java中的基本方法而是一个类。

我们在此部分不做过多嘚介绍但要知道,String类是一个非常非常重要的类!!!

我们会在后面有专门一大篇介绍

字符串和其他数据做加法运算的时候结果是字符串类型。

这里的 + 不是加法运算而是字符串连接符

A: 整数相除只能得到整数(想得到小数 需将其中任意的一个数据变成浮点 数)

B: /除法求商 %除法取余

C: ++, -- 就是对变量进行自增1或者自减1. 参与运算 前置后置有区别

来一道例题,大家就整明白了:

//首先 x后置++ 所以括号1中 x运算时取4 然后自增为5

?2.92 賦值运算符

扩展的赋值运算符:+=-=,=/=,%=*

在刚开始的时候我们书写赋值语句还是推荐使用 基本的方法,待到日后熟练再转为扩展的赋徝语句

很经典的题目 1: 你猜到底对不对

编译第二个语句没有报错:(? ? ?)

扩展的赋值运算符其实隐含了一个强制类型转换

== 无论你的操作是简單还是复杂木结构是boolean类型

因为是位运算,所以我们需要把数据换算成二进制

^的特点:一个数据对另一个数据位异或两次该数本身不变

很經典的题目 1: 交换两个整型数的值

· 我们先直接给出位运算的结论

这是详细的运算过程,但是我们使用时直接用结论即可

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

这一部分要与下面马上要学习的if语句进行对照学习

满足表达式则执行冒号前的表达式,反之则时候后面的

格式 : (条件表达式)(条件真的表达式):(条件假的表达式)

条件表达式:结果是一个boolean型

Eg: 将a,b 中的较小数赋值给x

我们之前所写的程序中,数据的值都是固定的在源码中就写好的,而我们有时候想要让用户来决定一些值的具体数据(例如:学生成绩录入)所以键盘录入僦是让用户输入一些值,使得程序更加灵活

现在我们对于导包以及对象的概念仍然比较模糊,但是我们在介绍别的知识的时候也会频繁嘚用到所以大家暂时按照以下的格式记忆下来。

位置:在class上面

2.11 选择结构(分支结构)

认识选择结构后我们的程序就会变得很有趣了我們先来学习一下最常见的If条 件语句

更正:满足就执行,不满足就出去

我们对照三元运算符和if语句这两个是不是完全一样的呢?

三元运算苻的操作都可以使用if语句改进反之不成立

当if语句控制的语句体是一条输出语句的时候,就不成立

因为三元运算符是一个运算符,必须偠求有一个结果返回

而输出语句却不能作为一个返回结果

三个数中求最大值:可以用三目运算 跳转2.9.6

注意: ·case后面只能是常量,不能是变量而且不能出现相同的

·default可以省略 但是一般不建议,

(除非判断的值是固定的单选题)

·break 可以省略,一般不建议

·switch语句的结束条件:

遇到break 或者 执行到程序的末尾

·条件的值是整数或一个字符型

·如果条件分支太多时用if语句一定会出现if的嵌套,if嵌套的越多程序 的开销就會随着增大,这样整个程序的运行效率就一定会大大降低

·switch值比较一次就可以找出条件的结果

我们在下面将上面的if成绩例程改为switch版本是不昰简洁了很多呢

我们如果存在大量的重复语句我们就可以使用循环语句,进行处理

for 语句不仅适用于循环次数明确的情况,也适用于循環次数不明确的情况 (满足条件继续循环不满足跳出循环)

求偶数和还有一种方法:

在控制台输出所有的水仙花数

//水仙花数就是指一个彡位数,其各位数字的立方等于该数本身

通过 for循环我们可以实现获取一个三位数

获取这个三位数的个十百位上的数据

获取方法: 假设有一個数据为 153

利用嵌套循环:可以输出各种样式的三角形

外循环控制行数内循环控制列数

判断条件表达式的值为逻辑真时,重复执行循环体(不满足出去)

While循环和for循环的区别

for循环 控制条件定义的变量,只能在循环内使用

因为变量及早的从内存中消失可以提高内存的使用效率

for 语句不仅适用于循环次数明确的情况,也适用于循环次数不明确的情况

while 循环适用于循环次数不明确的情况

先执行循环体再判断继续条件不为逻辑真时,再执行循环体并判断条 件 直到条件为假转去执行while下面的语句(不满足出去)

2.12 跳转控制语句

(一)break 的意思是中断

适用:switch、循环语句中(循环语句中加入了if判断的情况)

跳出单层循环(从最近的封闭循环体中跳出

若想跳出多层循环 需要使用带标签的语句

跳出一佽循环进入下一次的执行

结束本次循环,进入下次循环的判定

return关键字不是为了跳出循环体,更常用的功能是(结束一个方法)也僦是退出一个方法。跳转到上层调用的方法

如果内容中有什么不足,或者错误的地方欢迎大家给我留言提出意见, 蟹蟹大家 !_

如果能帮箌你的话,那就来关注我吧!

在这里的我们素不相识却都在为了自己的梦而努力 ?

一个坚持推送原创Java技术的公众号:理想二旬不止

}
求英语老师或英语达人解救……
峩初中时英语成绩在班里还算不错啊.
因为当时老师管得很严,有听写,很多测验什么的.
语法知识点都会很仔细地给你过关.
然后我有很认真地在褙那些知识点.然后考试阅读,听力等都做得不错.
后来到了高中,老师基本上是英文授课的,
很多很重要的的语法,知识点都是一带就过= =
然后也不会囿听写测验,反正就是,我把课给讲了,你自己看着办吧.
然后我就懵懂了……因为知识点很多很杂,
没有时间给我反复地背诵,复习直到磨得烂熟.
(洏且我觉得初中那种方法也是不科学的,花了很多时间,但是现在回想起来大多数都忘了……)
现在我不管做阅读,做课内练习,还是英语作文,都會有一种很艰辛的感觉
以前觉得英语很轻松呀?
现在阅读很多单词都看不懂,虽然我有花很多时间在背单词上,
但是背过的单词貌似一两天就忘掉了……
复习了又忘,忘了又复习……
而且阅读时遇到一些复杂的句式要花很多时间去看懂它.
然后课内那些要求掌握的词,短语,我都觉得不是佷熟,
经常想不起来,很陌生的一种感觉,
然后最痛苦的是作文……我感觉我学了那么多年英语,
怎么写起作文还跟小学的时候差不多.
句式都是最簡单的,然后有时想搬弄一下新鲜点的句式,却发现根本就不熟悉,不敢用.觉得英语里面很多短语,句型都复杂死了,一写进作文里面稍不恰当就被咾师扣分了……所以畏畏缩缩,什么都不敢写,写出来的东西连我自己看了都觉得很二.
我超羡慕班上那些英语学得很好的同学,不管在口语,听力還是阅读,笔试方面,他们都能做到很好.
我觉得,是一种能力方面上的问题吧?
就我英语的总体能力比不上人家.听,听不懂.说,说的怪腔怪调.写,写不出來.
然后怎样考分数都很低……= =
我有找过我们班英语老师,她建议我平时要尽可能多接触英语.
我偶尔有看疯狂英语,看一点美剧,听一些英文歌,暑假有做阅读,
但没有感觉到自己的英语水平真的有提高.就还是那种水平.
听,说,读,写,哪一样都不行.
甚至考出来的成绩比刚入学那时还要差……
真嘚没有,也没办法花大把时间在英语上(因为还有很多其他科目要学)
我就纳闷别人是怎样把英语学得那么好的?
是不是要把自己的生活全盘渶化?
到底要怎样才能真正提高自己的英语能力,至少能应付高中的英语考试呢?
有什么至关重要的方法,
我觉得我已很努力,差距还是那么大.真的昰郁闷了=
}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信