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这个名字,来自 ...
随机推荐
- CSS3与页面布局学习总结(四)——页面布局大全BFC、定位、浮动、7种垂直居中方法
目录 一.BFC与IFC 1.1.BFC与IFC概要 1.2.如何产生BFC 1.3.BFC的作用与特点 二.定位 2.2.relative 2.3.absolute 2.4.fixed 2.5.z- ...
- [常见问题]Project facet Java versin 1.8 is not support.
发生这个问题的原因是我们的java编译环境(JDK版本),与tomcat运行环境(JDK或JRE版本)不一致导致的. 到eclipse的设置中找到compile项(或右键项目进入),看一下编译环境的J ...
- Zabbix安装部署
zabbix服务器端配置:(10.27.98.29服务器端) 1.安装lamp环境 yum -y install autoconf curl-devel gcc gcc-c++ httpd httpd ...
- mysql-5.7.17-winx64免安装版,win10环境下安装配置
下载地址:http://dev.mysql.com/downloads/file/?id=467269 1.解压到自定义目录:我解压到了D盘的根目录 2.复制my-default.ini 重命名 my ...
- 每天一个linux命令(9):touch 命令
linux的touch命令不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件. 1.命令格式: touch [选项]... 文件... 2.命令参数: -a ...
- 快速入门系列--WCF--02消息、会话与服务寄宿
经过WCF基础的ABC学习,已经可以构建简单的WCF的服务,使用不同的服务地址和绑定类型,根据业务提供所需的服务契约.但不禁想问,服务所使用的消息报文是什么样的形式么?蕴含什么样内容呢?WCF服务是否 ...
- Bootstrap排版中地址与引用详解
地址元素address 我们的地址在HTML5中增加了一个address标签,可以把我们的地址写在address标签里面,address里面强调换行等等都是可以的. 实例: <address&g ...
- WPF自定义控件与样式(10)-进度控件ProcessBar自定义样
一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要内容: Pro ...
- windows phone listbox的点击事件
前台 <ListBox x:Name="> <ListBox.ItemTemplate> <DataTemplate> <Grid Margin=& ...
- html/css基础篇——html代码编写过程中的几个警惕点
本文想说的警惕点与浏览器兼容无关,主要是几个本人在项目中遇到的几个小问题的总结,问题虽小,但是却有时很困扰人,在此记录一下,如果后期有此类问题会持续添加到这里. 1.内联标签之间的空格 正常情况下书写 ...