Java学习笔记之---基础语法
Java学习笔记之---基础语法
一. Java中的命名规范
(一)包名
由多个单词组成时,所有字母小写(例如:onetwo)
(二)类名和接口
由多个单词组成时,所有单词首字母大写(例如:OneTwo)
(三)变量名和函数名
由多个单词组成时,第一个单词首字母小写,其他单词首字母大写(例如:oneTwo)
(四)常量名
由多个单词组成时,所有字母均大写,并且单词间用_连接(例如:ONE_TWO)
二. 标识符
- 可以由26个英文字母,数字,_和$组成
- 标识符大小写敏感
- 不能以数字开头
- 可以为任意长度
三. 修饰符
(一)访问修饰符
- default (即缺省,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
- private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
- public : 对所有类可见。使用对象:类、接口、变量、方法
- protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
我们可以通过以下表来说明访问权限:
访问控制 |
|||||
修饰符 |
当前类 |
同一包内 |
子孙类(同一包) |
子孙类(不同包) |
其他包 |
public |
Y |
Y |
Y |
Y |
Y |
protected |
Y |
Y |
Y |
Y/N(说明) |
N |
default |
Y |
Y |
Y |
N |
N |
private |
Y |
N |
N |
N |
N |
(二)非访问修饰符
static 修饰符,用来修饰类方法和类变量。
final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
1.final修饰class:该类没有子类 public final class/final public class
2.final修饰方法:该方法允许被子类正常继承,但不允许被子类重写
3.final修饰方法内局部变量:只要在具体使用之前赋值即可,一旦赋值,不允许被修改
4.final修饰类中成员属性:赋值过程:a.定义直接初始化 b.构造方法 c.构造代码块
5.final修饰基本数据类型:赋值后不能被改变
6.final修饰引用数据类型:初始化后不能再指向另一个对象,但内容可以改变
abstract 修饰符,用来创建抽象类和抽象方法。
synchronized 和 volatile 修饰符,主要用于线程的编程。
四.基本数据类型
(一)内置数据类型
(1)整数型
- byte
- int
- short
- long
(2)浮点型
- double
- 2.float
(3)字符型
- char
(4)布尔型
- Boolean
(二)引用数据类型
- 在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如 Employee、Puppy 等。变量一旦声明后,类型就不能被改变了。
- 对象、数组都是引用数据类型。
- 所有引用类型的默认值都是null。
- 一个引用变量可以用来引用任何与之兼容的类型。
五.变量类型
(一)局部变量
- 声明在构造方法、静态方法、实例方法、代码块中的变量,都是局部变量;
- 不能使用static和访问修饰符修饰;
- 可以使用final修饰,即为常量,不必在声明语句中赋值;
- 当执行局部变量所在的方法或代码块时,才有机会被创建,在方法或代码块执行结束后被自动销毁;
- 局部变量在内存的栈区分配;
- 局部变量在使用之前必须要先赋值;
(二)实例变量
- 声明在所有方法体和代码块之外,并且没有使用static修饰的变量,叫做实例变量;
- 可以使用访问修饰符和final修饰;
- 使用final修饰时,一定要赋值;
- 实例变量是在对象被创建时创建,对象被销毁时销毁;
- 作用域范围在整个类中;
(三)类的变量
- 声明在所有方法体和代码块之外,并且使用static修饰的变量;
- 可以使用访问修饰符修饰;
- 一般配合final使用,即public static fianl,标识符使用大写;
- 类变量被分配在静态存储区,是被所有该类的对象共享数据;
- 类变量是在程序开始时被创建,程序结束时销毁;
六.运算符
(一)算数运算符
操作符 |
描述 |
例子 |
+ |
加法 - 相加运算符两侧的值 |
A + B 等于 30 |
- |
减法 - 左操作数减去右操作数 |
A – B 等于 -10 |
* |
乘法 - 相乘操作符两侧的值 |
A * B等于200 |
/ |
除法 - 左操作数除以右操作数 |
B / A等于2 |
% |
取余 - 左操作数除以右操作数的余数 |
B%A等于0 |
++ |
自增: 操作数的值增加1 |
B++ 或 ++B 等于 21(区别详见下文) |
-- |
自减: 操作数的值减少1 |
B-- 或 --B 等于 19(区别详见下文) |
(二)关系运算符
运算符 |
描述 |
例子 |
== |
检查如果两个操作数的值是否相等,如果相等则条件为真。 |
(A == B)为假。 |
!= |
检查如果两个操作数的值是否相等,如果值不相等则条件为真。 |
(A != B) 为真。 |
> |
检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 |
(A> B)为假。 |
< |
检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 |
(A <B)为真。 |
>= |
检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 |
(A> = B)为假。 |
<= |
检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 |
(A <= B)为真。 |
(三)位运算符
操作符 |
描述 |
例子 |
& |
如果相对应位都是1,则结果为1,否则为0 |
(A&B),得到12,即0000 1100 |
| |
如果相对应位都是0,则结果为0,否则为1 |
(A | B)得到61,即 0011 1101 |
^ |
如果相对应位值相同,则结果为0,否则为1 |
(A ^ B)得到49,即 0011 0001 |
〜 |
按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 |
(〜A)得到-61,即1100 0011 |
<< |
按位左移运算符。左操作数按位左移右操作数指定的位数。 |
A << 2得到240,即 1111 0000 |
>> |
按位右移运算符。左操作数按位右移右操作数指定的位数。 |
A >> 2得到15即 1111 |
>>> |
按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 |
A>>>2得到15即0000 1111 |
(四)逻辑运算符
操作符 |
描述 |
例子 |
&& |
称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 |
(A && B)为假。 |
| | |
称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 |
(A | | B)为真。 |
! |
称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 |
!(A && B)为真。 |
(五)赋值运算符
操作符 |
描述 |
例子 |
= |
简单的赋值运算符,将右操作数的值赋给左侧操作数 |
C = A + B将把A + B得到的值赋给C |
+ = |
加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 |
C + = A等价于C = C + A |
- = |
减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 |
C - = A等价于C = C - |
* = |
乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 |
C * = A等价于C = C * A |
/ = |
除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 |
C / = A等价于C = C / A |
(%)= |
取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 |
C%= A等价于C = C%A |
<< = |
左移位赋值运算符 |
C << = 2等价于C = C << 2 |
>> = |
右移位赋值运算符 |
C >> = 2等价于C = C >> 2 |
&= |
按位与赋值运算符 |
C&= 2等价于C = C&2 |
^ = |
按位异或赋值操作符 |
C ^ = 2等价于C = C ^ 2 |
| = |
按位或赋值操作符 |
C | = 2等价于C = C | 2 |
Java学习笔记之---基础语法的更多相关文章
- java学习笔记之基础语法(一)
1.java语言基础由关键字.标识符.注释.常量和变量.运算符.语句.函数和数组等组成. 2.1关键字 定义:被java语言赋予了特殊含义的单词 特点:关键字中所有的字母都是小写. 2.2用于定义数据 ...
- java学习笔记之基础语法(二)
1.数组: 概念:同一种类型数据的集合,其实,数组就是一个容器 优点:可以方便的对其进行操作,编号从0开始,方便操作这些元素. 2,数组的格式 元素类型[]数组名=new 元素类型[数组元素个数]: ...
- Java学习笔记之基础语法(顺序,条件,循环语句)
顺序结构:自上而下 条件分支选择结构: if条件语句 1,一旦某一个分支确定执行以后,其他分支就不会执行.if后面的条件必须是boolean类型 2,if 后面如果不加大括号,默认相邻的下一 ...
- Java学习笔记之基础语法(数据类型)
8种基本数据类型 整型: byte[1字节] short[2字节] int[4字节] long[8字节] 1,四种整型之间的区别:申 ...
- Java学习笔记之基础语法(数组)
数组 数组概述:是具有相同数据类型的数据的集合 数组的定义:数据类型 数组名 [] 数组特点: 1,数组是引用数据类型. 2,数组值用大括号,元素之间用逗号隔开,元素的个数是0-N个 3,数组长度是固 ...
- java学习笔记之基础篇
java选择语句之switch //switch可以用于等值判断 switch (e) //int ,或则可以自动转化成int 的类型,(byte char short)枚举jdk 7中可以防止字 ...
- Hive学习笔记:基础语法
Hive基础语法 1.创建表 – 用户表 CREATE [EXTERNAL外部表] TABLE [IF NOT EXISTS 是否存在] HUserInfo ( userid int comment ...
- JAVA学习笔记之基础概念(一)
一.Java 简介: Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 面向对象程序设计语言和 Java 平台的总称. 由 James Gosling和同 ...
- Java基础学习笔记(一) - 基础语法
1.Java程序开发过程 编译: 是指将我们编写的Java源文件翻译成JVM认识的class文件,javac编译器会检查我们所写的程序是否有错误,有错误就会提示出来,如果没有错误就会编译成功. 运行: ...
随机推荐
- WPF应用程序的启动画面[Splash Screen本质分析]
原文:WPF应用程序的启动画面[Splash Screen本质分析] 不经意间发现了wpf的这个小玩意,感觉蛮有意思的.我在项目中添加了一张图片 如图: wpf-1.JPG(10.73 K) 2010 ...
- 汇编实现获取CPU信息
这是文章最后一次更新,加入了TLB与Cache信息等资料前言:论坛上面有人不明白CPUID指令的用法,于是就萌生写这篇文章的想法,若有错误话请大侠指出,谢谢了 ^^论坛的式样貌似有问题,若式样问题导致 ...
- 自动启动 Windows 10 UWP 应用
原文: https://docs.microsoft.com/zh-cn/windows/uwp/xbox-apps/automate-launching-uwp-apps 简介 开发人员有多种选项可 ...
- Assertion failure in UITableViewCell layoutSublayersOfLayer解决办法
iOS6 设备在更新UITableViewCell的时候遇到了 Assertion failure in -[UITableViewCell layoutSublayersOfLayer:], /So ...
- Win8Metro(C#)数字图像处理--2.33图像非线性变换
原文:Win8Metro(C#)数字图像处理--2.33图像非线性变换 [函数名称] 图像非线性变换函数NonlinearTransformProcess(WriteableBitmap src ...
- Android多线程(三)
上次讲了关于Android多线程中通信中Thread.Handler.Looper等的基础概念和基本用法,用现实世界两个人写信交流的过程来理解是再好不过了.但是不得不说这一套完整的细节的确很繁琐,好在 ...
- Win10自带应用不喜欢?一条命令全部卸载
与Win8/Win8.1一样,Win10中继续内置了应用商店,所不同的是Windows10中已升级为通用应用商店,具有跨平台特性.可能有的朋友仍不喜欢使用Modern应用,因为传统桌面应用几乎能够满足 ...
- .Net Random产生随机数
之前用winform做过有个摇奖游戏,其中中奖条件为产生的两个随机数一致则中奖,测试发现每次都会中奖. 忘记方式是怎么解决的了,今天看到了传智论坛的一片文章也是关于Random的,就点进去看了,它里面 ...
- 使用.NET进行高效率互联网敏捷开发的思考和探索【一、概述】
不知从什么时候开始,创业变得很廉价,谈什么都是互联网,动辄融资千万.这阵风好像也刮向了程序员中,有那么一大批开发者,数据结构不好好学习.数据库原理不扎实掌握,在github上发布几个项目,用nodej ...
- “真正的工作不是说的天花乱坠”,Torvalds 说, “而是在于细节”(Torvalds 认为成功的项目都是99%的汗水和1%的创新)
在刚刚结束的加利福尼亚州的开源领袖峰会(2月14日-16日)上,Linus Torvalds 接受了外媒的采访,分享了他如何管理 Linux kernel 的开发以及他对工作的态度. “真正的工作不是 ...