【Java基础】基础概念
Java 关键字
- 被Java语言赋予特定含义的单词
- 组成关键字的字母全部小写
- goto和const作为保留字存在,目前并不使用
- 一般关键字在IDE中会高亮
用于定义数据类型的关键字 |
||||
class |
interface |
byte |
short |
int |
long |
float |
double |
char |
boolean |
void |
||||
用于定义数据类型值的关键字 |
||||
true |
false |
null |
||
用于定义流程控制的关键字 |
||||
if |
else |
switch |
case |
default |
while |
do |
for |
break |
continue |
return |
用于定义访问权限修饰符的关键字 |
||||
private |
protected |
public |
||
用于定义类,函数,变量修饰符的关键字 |
||||
abstract |
final |
static |
synchronized |
|
用于定义类与类之间关系的关键字 |
||||
extends |
implements |
|||
用于定义建立实例及引用实例,判断实例的关键字 |
||||
new |
this |
super |
instanceof |
|
用于异常处理的关键字 |
||||
try |
catch |
finally |
throw |
throws |
用于包的关键字 |
||||
package |
import |
|||
其他修饰符关键字 |
||||
native |
strictfp |
transient |
volatile |
assert |
Java标示符
- 给类,接口,方法,变量等起名字时使用的字符序列
- 由英文大小写字母和数字以及$和_组成,切不能为Java关键字,同时不能以数字开头
- 标示符区分大小写
Java 注释
- 为了对程序进行说明
- 单行注释 //注释内容
- 多行注释 /*注释内容*/
- 文档注释 /**注释内容 */
Java常量
- 执行程序过程中值不会发生变化
- 字符串常量 例如 "aba", "happy"
- 整数常量 例如 10,二进制表示(0b1010),八进制表示(012),十进制表示(10,默认表示形式),十六进制表示(0x000A)
- 小数常量 例如 1.1,2.1等
- 字符常量 例如 'a', 'b',但是'ab'是错的
- 布尔型常量 例如 true,false
- 空常量 只有null
整数常量会有原码,反码,和补码的区别,所有数据的运算都是采用补码进行的;
- 原码:就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
- 反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
- 补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
Java变量
- 在程序执行的过程中,在某个范围内其值可以发生改变的量;
- 定义格式:数据类型 变量名 = 初始化值;
Java 数据类型
Java是强数据类型语言,内存上会区别不同类型内存的大小,下面是不同数据类型的区分表。
不同数据类型大小区分如下:
简单类型 |
boolean |
byte |
char |
short |
Int |
long |
float |
double |
void |
字节数目 |
1 |
1 |
2 |
2 |
4 |
8 |
4 |
8 |
-- |
封装器类 |
Boolean |
Byte |
Character |
Short |
Integer |
Long |
Float |
Double |
Void |
默认整数是用int表示,如果用long,记得数字后缀加L;默认小数用double表示,如果要用float,记得用F为后缀;
Java 类型转换
- 布尔型不支持转化
- byte,short,char—int—long—float—double;
- byte,short,char相互之间不能转换,他们参与运算首先转换为int类型;
- 强制转换: 目标类型 变量名=(目标类型)(被转换的数据);
注意点:
byte b1 = 3, b2 = 4, b;
b = b1 + b2;//会报错,可能损失精度
b = 3 + 4;//不会报错
因为
b = b1 + b2
默认有类型提升,byte和byte相加,先转换成int,然后将int赋值给byte会出现“可能损失精度”的报错;
但是 b = 3 + 4则不会报错,这是因为常量先把结果计算出来,然后看是否在byte范围内,如果在则不会报错;
所以变量是先讲类型进行提升,byte,short,char的计算,都是先到int,然后再去计算。常量在编译后就可以确定,而变量要运行后才能确定。
如果赋值出现溢出怎么办,例如有byte b = (byte) 131;
这时候计算机操作如下:
计算机会把131看作整数,所以在计算机中存储131为4个字节,如下:
0000 0000 0000 0000 0000 0000 1000 0011
然后赋值给byte,会先截取最后一个字节,所以b在计算机中存储的是1000 0011,记住,这是补码,最终输出的结果是原码。
补码: 1 000 0011
反码: 1 000 0010
原码: 1 111 1101
所以结果为:-125
Java 算术运算符
注意点:
- 除法中,整数和整数相除,得到的是整数
- +号可以表示加法,正数和字符串的链接
- System.out.println(8++);这句语句编译会出错,因为常量不能参与这种自增运算,++,--针对的是变量
Java 关系运算符
Java 逻辑运算符
&&:结果和&是一样的,只不过有短路效果。左边是false,右边不执行。
||:结果和|是一样的,只不过有短路效果。左边是true,右边不执行。
&,|,^:当两边出现的是布尔值时,做的是逻辑运算,最后结果为true或false;但,当两边为数值时,做的是位运算。
Java算术运算符
A:+,-,*,/,%,++,--
B:+的用法
a:加法
b:正号
c:字符串连接符
C:/和%的区别
数据做除法操作的时候,/取得是商,%取得是余数
D:++和--的用法
a:他们的作用是自增或者自减
b:使用
**单独使用
放在操作数据的前面和后面效果一样。
a++或者++a效果一样。
**参与操作使用
放在操作数的前面:先自增或者自减,再参与操作
int a = 10;
int b = ++a;// b为11
放在操作数的后面:先参与操作,再自增或者自减
int a = 10;
int b = a++;//b为10
Java赋值运算符
A: =,+=,-=,*=,/=,%=等
B: =叫做赋值运算符,也是最基本的赋值运算符
int x = 10; 把10赋值给int类型的变量x。
C:扩展的赋值运算符的特点
隐含了自动强制转换。
面试题:
short s = 1;
s = s + 1; //先做了类型转换到int,然后没有强制类型转换,会报出“可能损失精度的错误”
short s = 1;
s += 1;// 隐含了自动强制转换。不会报错
A:^的特殊用法
一个数据针对另一个数据位异或两次,该数不变
B:面试题
a:请实现两个变量的交换
**采用第三方变量:用一个temp中间变量来实现交换
**用位异或运算符(高效率)
a = a ^ b;
b = a ^ b;
a = a ^ b;
** 用减法
a = a + b;
b = a - b;
a = a - b;
** 一条语句实现交换
b = (a+b) - (a=b);
b:请用最有效率的方式计算出2乘以8的结果:2<<3
Java三元运算符
A:格式
比较表达式?表达式1:表达式2;
B:执行流程:
首先计算比较表达式的值,看是true还是false。
如果是true,表达式1就是结果。
如果是false,表达式2就是结果。
C:案例:
a:比较两个数据是否相等
b:获取两个数据中的最大值
c:获取三个数据中的最大值
【Java基础】基础概念的更多相关文章
- Java多线程--基础概念
Java多线程--基础概念 必须知道的几个概念 同步和异步 同步方法一旦开始,调用者必须等到方法调用返回后,才能执行后续行为:而异步方法调用,一旦开始,方法调用就立即返回,调用者不用等待就可以继续执行 ...
- Java并发基础概念
Java并发基础概念 线程和进程 线程和进程都能实现并发,在java编程领域,线程是实现并发的主要方式 每个进程都有独立的运行环境,内存空间.进程的通信需要通过,pipline或者socket 线程共 ...
- Java 多线程基础(一)基本概念
Java 多线程基础(一)基本概念 一.并发与并行 1.并发:指两个或多个事件在同一个时间段内发生. 2.并行:指两个或多个事件在同一时刻发生(同时发生). 在操作系统中,安装了多个程序,并发指的是在 ...
- java基础 三 概念和java程序的结构.
一.java的一些概念: JRE(java runtime environment):java程序运行环境,如果要运行java程序,需要jre支持.jre里包含jvm JDK(java devel ...
- 《Java基础知识》Java线程的概念
按照规划,从本篇开始我们开启『并发』系列内容的总结,从本篇的线程开始,到线程池,到几种并发集合源码的分析,我们一点点来,希望你也有耐心,因为并发这块知识是你职业生涯始终绕不过的坎,任何一个项目都或多或 ...
- Java学习总结(二)----Java语言基础
1. Java语言基础 2.1 关键字 定义:被java语言赋予特殊含义的单词 特点:关键字中的字母都为小写 用于定义数据类型的关键字 class,interface,byte,short,i ...
- [转]Java多线程干货系列—(一)Java多线程基础
Java多线程干货系列—(一)Java多线程基础 字数7618 阅读1875 评论21 喜欢86 前言 多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们 ...
- Android开发之Java必备基础
Android开发之Java必备基础 Java类型系统 Java语言基础数据类型有两种:对象和基本类型(Primitives).Java通过强制使用静态类型来确保类型安全,要求每个变量在使用之前必须先 ...
- JAVA面试基础
JAVA相关基础知识1.面向对象的特征有哪些方面 ?1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂 ...
- 【重走Android之路】【Java面向对象基础(三)】面向对象思想
[重走Android之路][基础篇(三)][Java面向对象基础]面向对象思想 1 面向对象的WWH 1.1 What--什么是面向对象 首先,要理解“对象”.在Thinkin ...
随机推荐
- jquery实现替代iframe的功能
使用iframe能很好的嵌入其他的网页或者网站,但是iframe每次加载都会浪费好多的时间,且会阻止其他元素的加载,搜索引擎也不能识别页面ifram框架中被调用的链接.文本.图片等等内容的. Html ...
- org
controller层单元测试报错 org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of ...
- Oracle RAC备份异机单实例恢复演练
本文只节选了操作方案的部分章节: 3. 操作步骤 3.1. 异机单实例Oracle数据库软件安装 在异机上进行单实例Oracle数据库软件安装.该步骤过程不再本文中重复描述,如果对安装过程存在疑问 ...
- This transaction has been rolled back, rather than only the current.
今天上午,收到运维组同事反映某应用系统的其中一个功能报错,不是偶然性事件,每个使用该功能的用户都报错.报错内容为:This transaction has been rolled back, rath ...
- C,C++,JAVA char,各占字节数
char在C和C+中占一个字节 Java中无论是汉字还是英文字母都是用Unicode编码来表示的,一个Unicode码是16位,每字节是8位,所以一个Unicode码占两字节 /** * The nu ...
- 多个div并排显示的居中问题——来自腾讯的一道面试题
前两天曲面了一下腾讯,被鄙视了... 自己太水了,且面试官对我可能也有点不爽,说什么还没叫我我就去了,可是尼玛写的面试时间是3点40,我特码进去的时候都3点50了,我还以为晚了呢,他妈的. 实现几个d ...
- x86, x86-64, i386, IA32, IA64...
转自x86, x86-64, i386, IA32, IA64... x86:Intel从16位微处理器8086开始的整个CPU芯片系列,系列中的每种型号都保持与以前的各种型号兼容,主要有8086,8 ...
- POJ 1404 I-Keyboard (DP)
http://poj.org/problem?id=1404 题意 :手机上的要发短信的话,“我”字需要先按一下9键,再按3下6键,所以,现在想要重新布局每个键上的字母数,让最后的那个值最小,也就是说 ...
- Java程序发展之路
- 分析Java的类加载器与ClassLoader(二):classpath与查找类字节码的顺序,分析ExtClassLoader与AppClassLoader的源码
先回顾一下classpath classpath的作用: classpath的作用是指定查找类的路径:当使用java命令执行一个类(类中的main方法)时,会从classpath中进行查找这个类. 指 ...