luogg_java学习_02_基本语法
本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用.
**转载请注明 出自 : luogg的博客园 ** 谢谢配合!
关键字
- 定义:被java语言赋予了特殊含义,用作专门用途的字符串。
- 特点:关键字所有字母都小写。
保留字
- 现有java版本尚未使用,但以后版本会作为关键字使用.byValue,cast,future,inner,outer,var,goto,const
标示符
- java对各种变量,方法和类等要素命名时使用的字符序列称为标示符。
- 凡是自己可以起名字的地方都叫标示符
java中名称命名规范
- 包名:多单词组成时所有字母都小写:xxxyyyzzz
- 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
- 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
int myInt = 1;
- 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
变量
- 数据类型 变量名 = 初始化值;
- 变量的作用域:一对{}之间
基本数据类型
- 整型byte,short,int,long(L/l)
byte 1字节(8byte), -128~127
short 2字节,-215~215-1
int 4字节,-231~231-1 , java1.7开始,加上前缀0b就可以写一个二进制数了,例如0b1001表示9
long 8字节,-263~263-1 - 浮点型float(F),double
float 4字节
double 8字节 **double/0 = Infinity(无穷) - 字符型char(只能表示一个字符,可以是英文中文标点,若要表示多个字符,用String)
char c1='a';
String str="abc";
布尔型boolean
char类型还可以表示转义字符和unicode值
char c1='\n';
char c2='\t';
char c3='\u1234';
基本数据类型转换
- 自动类型转换:当容量小的数据和容量大的数据做运算时,容量小的数据会自动转换为容量大的数据。
char,byte,short>int>long>float>double
- 强制类型转换:容量大的转换为容量小的,要使用强制类型转换。
long l1=12345L;
int i1=(int)l1;
强制类型转换的问题:导致精度损失。
- [x] String类型的字符串与基本数据类型之间的运算:只能是连接运算 + 。得到的结果仍然是一个字符串。
String str="abc";
int i1=12345;
String str2=str+i1;//abc12345;
原码、反码、补码
- 对于正数,原码反码补码三码合一。
- 反码:原码各个位除符号位外取反。
- 补码:反码+1。
- 不管正数还是负数,在底层都是以补码的形式存储的。
进制之间的转换
- 十进制==>二进制:除2取余数的逆
- 二进制>八进制:三个数当做一个数。
111010010351 - 二进制==>十六进制:四个数当作一个数。
算术运算符
- +(正号),-(负号),+,-,*,/,%(取模),++,--,+(连接符)
- i++:先运算,后自增加1。
- ++i:先自增加1,后运算
int i1=10;
int i2=i1++;
System.out.println(i1);//11
System.out.println(i2);//10
int i3=10;
int i4=++i3;
System.out.println(i3);//11
System.out.println(i4);//11
int i5=10;
int i6=i5--;
System.out.println(i5);//9
System.out.println(i6);//10
int i7=10;
int i8=--i7;
System.out.println(i7);//9
System.out.println(i8);//9
赋值运算符
- +=,-=,*=,/=,%=
short s=3;
s=(short)(s+3);//不建议如此实现
s+=3;//既可以实现运算,又不会更改s的数据类型。
- =为赋值符号。==为等号,判断左右是否相等。
逻辑运算符
- &逻辑与:不管左边是ture还是false右边都会进行运算。
- &&短路与:当左边为false时右边不进行运算。(建议使用&&,)
- |逻辑或:左端为true时,右端继续做运算。
- ||短路或:左端为true时,右端不再做运算。(建议使用||)
- !逻辑非
- ^逻辑异或:左右两边取值不一样的时候才为1。
深入理解逻辑与和短路与的区别
boolean c=false;
int c1=10;
if(c&(c1++) >0){
System.out.println("今天是个好天气");
}else{
System.out.println("难得没有雾霾");//难得没有雾霾
}
System.out.println(c1);//11
int c2=10;
if (c&&(c2++)>0) {
System.out.println("今天是个好天气");
}else{
System.out.println("难得没有雾霾");//难得没有雾霾
}
System.out.println(c2);//10
位运算符
- <<左移,左移几位,相当于成2的几次方
- >> 右移,不足的用与最高位相同的数字补齐,0或1。
- >>>:无符号右移,不足的都用0补全。
- &:与运算,6&3=2;用2进制表示,上下相等用为1,否则为0。
- |:或运算,6|3=7。用二进制表示,上下有一个为1,则为1。
- ^:异或运算,6|3=5.用二进制表示,上下两边不一样时用1表示。
- :反码。6=-7。用二进制表示,直接各位取反。
交换两个元素的值
int m=5;
int n=10;
方法一:提供一个临时变量
int temp;
temp=m;
m=n;
n=temp;
方法二:当m和n较大时,有可能出现精度损失
m=m+n;
n=m-n;
m=m-n;
方法三:优点:没有上面两种方法的缺点。 缺点:难,想不到。
m = m ^ n;
n = m ^ n;//(m^n)^n=m
m = m ^ n;//(m^n)^m
练习:以手动的方式,从控制台输出60的2进制8进制16进制
int i=60;
//将十进制的数转换为二进制
String binary=Integer.toBinaryString(i);
System.out.println(binary);//111100
//将十进制的数转换为八进制
String octal=Integer.toOctalString(i);
System.out.println(octal);//74
//将十进制的数转换为十六
String hex=Integer.toHexString(i);
System.out.println(hex);//3c
三元运算符
- 三元运算符:(条件表达式)?表达式1:表达式2;
- 要求:表达式1与表达式2必须是同种数据类型。
- 三元运算符可以转换为if-else,反之不成立。因为三元运算符必须有一个运算结果,而if-else不一定需要有运算结果。
int i=10,j=20;
int max=(i>j)?i:j;
System.out.println(max);//20
String str=(i>j)?"i大":"j大";
System.out.println(str);//j大
int i1=10,j1=10;
String str1=(i1>j1)?"i1大":(i1==j1)?"相等":"j1大";
System.out.println(str1);//相等
//用三元运算符输出三个数中的最大值
int a=5,b=100,c=20;
int max1=(a>b)?a:(b>c)?b:c;
System.out.println(max1);//100
luogg_java学习_02_基本语法的更多相关文章
- JavaScript学习02 基础语法
JavaScript学习02 基础语法 JavaScript中很多基础内容和Java中大体上基本一样,所以不需要再单独重复讲了,包括: 各种算术运算符.比较运算符.逻辑运算符: if else语句.s ...
- 通过这些示例快速学习Java lambda语法
对于那些不熟悉函数式编程的人来说,基本的Java lambda语法起初可能有点令人生畏.但是,一旦将lambda表达式分解为它们的组成部分,语法很快就会变得有意义并变得非常自然. Java中lambd ...
- vue第四单元(初识vue-在页面中直接引入vue框架-学习使用vue语法-vue的指令-介绍data用法-methods用法)
第四单元(初识vue-在页面中直接引入vue框架-学习使用vue语法-vue的指令-介绍data用法-methods用法) #课程目标 了解 vue 框架的特点 掌握创建 vue 实例 掌握 data ...
- Python学习--Python基础语法
第一个Python程序 交互式编程 交互式编程不需要创建脚本文件,是通过 Python 解释器的交互模式进来编写代码. linux上你只需要在命令行中输入 Python 命令即可启动交互式编程,提示窗 ...
- php学习之基础语法
这些语法都是在学习视频的过程中整理出来的,有些很简单的语法可能就没有整理了,只是记录了自己看来比较重要的语法内容. 1.变量使用 $ 声明 ,变量区分大小写 变量的类型: 4种标量类 ...
- python学习之基础语法
一.缩进 学习 Python 与其他语言最大的区别就是,Python 的代码块不使用大括号 {} 来控制类,函数以及其他逻辑判断.python 最具特色的就是用缩进来写模块. 缩进的空白数量是可变的, ...
- 学习fortran77基础语法
Program ParamaterDefine Implicit None C FORTRAN变量名和关键字不区分大小写.但调用外部函数的话,需要在编译选项里指定 c 大小写等选项 因为链接器是区分大 ...
- Python学习---django模板语法180122
django模板语法[Template] 模版的组成: HTML代码+逻辑控制代码 <h1> {{ user_name }} </h1> 逻辑控制代码的组成: 1.变量: ...
- python学习第一天-语法学习
1.python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,Guido开始写能够解释Python语言语法的解释器.Python这个名字,来自 ...
随机推荐
- 这里有个坑---entity为null的问题
这里有个坑,最近加班赶个项目,忽然遇到个这个坑,先记录下来,纯当自己提高.---------每一个遇到的坑总结后都是一比财富. 我们在做项目是会使用ajax返回结果,在返回结果的时候一般选择json数 ...
- 基础才是重中之重~stream和byte[]的概念与转化
回到目录 多看几篇 之所以写这篇文章完全是因为最近在研究FastDFS这个分布式的文件存储系统,当然这不是我第一次研究它了,就像我们去看一本书,我们不会只看一篇,而是一次次,一篇篇,每看一次会有新的收 ...
- EF架构~对AutoMapper实体映射的扩展
回到目录 AutoMapper在之前我曾经介绍过,今天主要是把它作一下扩展,因为它的调用太麻烦了,呵呵,扩展之后,用着还可以,感觉.net3.5之后,有了扩展方法这个东西,在程序开发速度及表现力上都有 ...
- 正则表达式匹配/data/misc/wifi/wpa_supplicant.conf的WiFi名称与密码
正则表达式匹配/data/misc/wifi/wpa_supplicant.conf的WiFi名称与密码: String regex_name="ssid=\"(.*?)\&quo ...
- Atitit vod ver 12 new feature v12 pb2 影吧 视频 电影 点播 播放系统v12新特性
Atitit vod ver 12 new feature v12 pb2 影吧 视频 电影 点播 播放系统v12新特性 项目分离从独立的se ver Run mode from brow ex to ...
- salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句
salesforce如果简单的说可以大概分成两个部分:Apex,VisualForce Page. 其中Apex语言和java很多的语法类似,今天总结的是一些简单的Apex的变量等知识. 有如下几种常 ...
- wangEditor——轻量级web富文本框
提示:最新版wangEditor请参见 http://www.wangeditor.com/ 和 https://github.com/wangfupeng1988/wangEditor 交流 ...
- WPF/Silverlight 下的图片局部放大
最近的项目中也要用到一个局部图片放大的功能,园子里面一搜,发现(菩提下的杨过)杨大侠已经实现了. 请参见这里:http://www.cnblogs.com/yjmyzz/archive/2009/12 ...
- javascript类型系统——包装对象
× 目录 [1]定义 [2]生存期 [3]显式创建[4]转型函数[5]比较运算 前面的话 javascript对象是一种复合值,它是属性或已命名值的集合.通过'.'符号来引用属性值.当属性值是一个函数 ...
- java中异常注意的细节2
class A extends Exception{ A(){ super(); } A(String msg){ super(msg); } } class B extends A{ B(){ su ...