一.标识符

  

二.关键字

  

三.JAVA基础数据类型

3.1. java常量

  

3.2. java变量

  

  从本质上来讲,变量其实是内存里面的一小块区域,一个程序在运行的时候,实际上这个程序是位于内存里面,然后才开始运行。一个.exe文件存放在硬盘上是无法运行的,在硬盘上看到的.exe文件无非就是一个文件而已,当我们双击这个.exe文件时,运行起来的时候实际上是整个.exe文件被放在了在内存里面,然后操作系统找到main方法,也就是程序的入口,然后就开始执行了。执行的过程之中,会不断地在内存里面分配一些区域,变量在内存里面就是一小块区域,变量有两个概念,一个是变量的名字,另一个是变量的值,即这一小块区域是有名字的,里面装着一个值,因此以后要想访问这小块区域里面的内容就可以根据这小块区域的名字来访问了。因此,变量的本质就是一小块内存区域。就变量来说,该在内存里面分配多大的存储空间呢?不同的变量类型分配不同大小的存储空间,每一个变量都是属于特定的数据类型的,声明成不同的数据类型,它就在内存里面分配不同的存储空间。

  变量作用域:变量的作用域只在“{  }”有效,出了这个“{  }”就没有作用了

3.3. java变量的分类

  

3.4. java局部变量与成员变量

  

3.5. java数据类型划分

  

四. java数据类型讲解

4.1.boolean——布尔型

  

4.2.char——字符型

    

  全球的文字放到计算机里面表示全是0和1,Unicode是统一了全世界国家文字的一种编码方式,用这样的编码可以把全世界国家的文字连接在一起。Unicode编码又分为两种,一种是Utf-8,另一种是Utf-16。JAVA所采用的是Utf-16,每一个字符占2个字节,任何国家的文字放到Unicode里面都是占2个字节。

4.3.整数类型

  

  C语言编译好的程序为什么不能移植,如把.exe文件放到Linux下是执行不了的,一个很大很大的原因在于C语言定义的变量在不同的操作系统上所占的大小是不一样的,声明一个int类型的变量,在Windows下面占32位,但放到Linux下面就有可能只占16位,那么这时候很可能表示的大小就不一样了,在Windows下声明一个很大的数,在Linux下面很可能就会溢出。因此这就是C语言为什么在编译完成之后不能移植的原因。

4.4.浮点类型

  

4.5.基本数据类型的转换

  

类型转换测试

 1 public class TestConvert {
2 public static void main(String arg[]) {
3 int i1 = 123;
4 int i2 = 456;
5 double d1 = (i1+i2)*1.2;//系统将转换为double型运算
6 float f1 = (float)((i1+i2)*1.2);//需要加强制转换符
7 byte b1 = 67;
8 byte b2 = 89;
9 byte b3 = (byte)(b1+b2);//系统将转换为int型运算,需要强制转换符
10 System.out.println(b3);
11 double d2 = 1e200;
12 float f2 = (float)d2;//会产生溢出
13 System.out.println(f2);
14 float f3 = 1.23f;//必须加f
15 long l1 = 123;
16 long l2 = 30000000000L;//必须加l
17 float f = l1+l2+f3;//系统将转换为float型计算
18 long l = (long)f;//强制转换会舍去小数部分(不是四舍五入)
19 }
20 }

五.运算符

  

5.1.算术运算符(自加和自减运算符)

  

5.2.逻辑运算符

  

5.3.赋值运算符

  

5.4.字符串连接符

  

5.5.表达式

  

5.6.三目运算符

  

一、语句

  

1.1. 条件语句

  1.1.1 if语句

  

  1.1.2 分支语句(switch语句)

  

  

      

1.2. 循环语句

  1.2.1 for循环语句

  

  学会画内存分析图分析别人写的程序,这样就很容易分析出规律,分析出规律也就明白了别人的算法,也就很容易读懂别人的程序。

在内存中分析result=1!+2!……+10!的算法

  

  分析到i等于3以后,基本上已经得到规律了,这个程序要计算的就是:result = 1!+2!+3!……+10!。

  由此可以看出,懂得画内存去分析程序对读懂别人的程序是大有裨益的。以后读别人的程序的时候,觉得难读懂的时候就画内存分析。

  学习别人的算法的最好的途径是分析别人写的程序,分析的过程结合内存分析是最好的做法。

1.2.2 while循环和do while循环

  

1.2.3 break和continue语句

  

二、方法

  

  方法执行到return语句后,这个方法的执行就结束了,方法可以有返回值,但可以不用这个返回值。方法首先要定义,然后才能调用。

 1 public class TestMethod{
2 public static void main(String args[]){
3 m();
4 m1(3);
5 m2(2,3);
6 int i = m3(4,5);
7 System.out.println(i);
8 }
9 //以下定义的都是静态方法,静态方法可以在main()方法里面直接调用
10 public static void m(){
11 System.out.println("Hello!");
12 System.out.println("孤傲苍狼");
13 }
14
15 public static void m1(int i){
16 if(i==5){
17 return;
18 }
19 System.out.println(i);
20 }
21
22 public static void m2(int i,int j){
23 System.out.println(i+j);
24 }
25
26 public static int m3(int i,int j){
27 return i+j;
28 }
29 }

三、变量的作用域

  变量的作用域只在“{  }”有效,出了这个“{  }”就没有作用了

四、递归调用

  递归:在一个方法内部对自身的调用就称为递归

  

  整个方法执行在内存中执行的过程如下图所示:

  

范例:使用递归计算第5个斐波那契数列数

 1 /*计算第5个斐波那契数列数*/
2 /*
3 斐波那契数列特点:f(1)=1,f(2)=1,f(3)=f(1)+f(2),f(4)=(f2)+(f3)……依次类推。
4 即后一个数都是等于前两个数的和,这样的数列就是斐波那契数列。
5 */
6 /*
7 使用递归调用的方法计算
8 */
9 public class Fab{
10 public static void main(String args[]){
11 System.out.println(f(5));
12 }
13
14 public static int f(int n){
15 if(n==1||n==2){
16 return 1;
17 }else{
18 return f(n-1)+f(n-2);
19 }
20 }
21 }

  整个在内存中执行过程如下图所示

  

五、程序的执行过程

  

Java基础学习总结(20)——基础语法的更多相关文章

  1. Java最新学习线路(基础,源码,项目,实战)

    如需获取以下学习资源请关注公众号:Java编程指南 我们为自学者编程的或初学java的小伙伴们准备了一整套完整的学习资源和文章,还有我自己在自学路上的一些总结和学习线路,希望能帮到小伙伴们,如果有什么 ...

  2. Java基础学习笔记(一) - 基础语法

    1.Java程序开发过程 编译: 是指将我们编写的Java源文件翻译成JVM认识的class文件,javac编译器会检查我们所写的程序是否有错误,有错误就会提示出来,如果没有错误就会编译成功. 运行: ...

  3. <java基础学习>02JAVA的基础组成

    Java的基础组成 1 关键字 (被赋予了特殊含义的单词) 2 标识符 3 注释 4 常量和变量 5 运算符 6 语句 7 函数 8 数组 关键字 class Demo{ public static ...

  4. java基础学习05(面向对象基础01)

    面向对象基础01 1.理解面向对象的概念 2.掌握类与对象的概念3.掌握类的封装性4.掌握类构造方法的使用 实现的目标 1.类与对象的关系.定义.使用 2.对象的创建格式,可以创建多个对象3.对象的内 ...

  5. JAVA多线程基础学习一:基础知识

    我们知道多线程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程对我们来说极其重要,下面跟我一起开启本次的学习之旅吧. 一.线程基本概念 1 线程:进程中负责程序执行的执行单元(执行 ...

  6. java安全学习-环境准备/基础知识

    补java的坑,开始! 1.Intellij一些快捷键 intell常用快捷键: ctrl+n 快速查找定位类的位置 ctrl+q 快速查看某个类的文档信息 shift + F6 快速类.变量重命名 ...

  7. Java开发学习(三)----Bean基础配置及其作用范围

    一.bean基础配置 对于bean的基础配置如下 <bean id="" class=""/> 其中,bean标签的功能.使用方式以及id和clas ...

  8. java基础学习05(面向对象基础02)

    面向对象基础02 实现的目标 1.String类的使用2.掌握this关键字的使用3.掌握static关键字的使用4.了解内部类 String类 实例化String对象一个字符串就是一个String类 ...

  9. java基础学习05(面向对象基础01--类实例分析)

    面向对象基础01(类实例分析) 实现的目标 1.如何分析一个类(类的基本分析思路) 分析的思路 1.根据要求写出类所包含的属性2.所有的属性都必须进行封装(private)3.封装之后的属性通过set ...

  10. 吴裕雄--天生自然 JAVA开发学习:Applet 基础

    import java.applet.*; import java.awt.*; public class HelloWorldApplet extends Applet { public void ...

随机推荐

  1. SpringMVC学习(二)——SpringMVC架构及组件(及其运行原理)-转载

    相信大家通过前文的学习,已经对SpringMVC这个框架多少有些理解了.还记得上一篇文章中SpringMVC的处理流程吗?  这个图大致描述了SpringMVC的整个处理流程,这个流程图还是相对来说比 ...

  2. Codeforces Round #289 Div 2

    A. Maximum in Table 题意:给定一个表格,它的第一行全为1,第一列全为1,另外的数满足a[i][j]=a[i-1][j]+a[i][j-1],求这个表格中的最大的数 a[n][n]即 ...

  3. 模拟post提交

    模拟post提交 function post(URL, PARAMS) { var temp = document.createElement("form"); temp.acti ...

  4. (2016北京集训十二)【xsy1542】疯狂求导

    题解: 这题看起来很难...但是实际上并没有想象中的那么难 第一眼看上去不会求导公式怎么办?不要紧,题目背景非常良心的给出了题目中的导数计算公式 求完导合并同类项很恶心怎么办?不要紧,样例解释说明了不 ...

  5. K-D树学习笔记

    这东西其实就是高维二叉树?(反正我只会二维的) 大概就是把一个高维矩形按每一维分,一个点(及其子树)就表示一个高维区间,乱搞一下,就……没了? //BZOJ4066 "简单"题 / ...

  6. 箭头函数的this

    定义时所处的对象就是它的this 看外层是否有函数 如果有,外层函数的this就是内部箭头函数的this 如果没有,this就是window let obj = { name : '箭头函数', ge ...

  7. Vir-manager 创建虚拟机

  8. 阿里云CentOS系统配置iptables防火墙

    虽说阿里云推出了云盾服务,但是自己再加一层防火墙总归是更安全些,下面是我在阿里云vps上配置防火墙的过程,目前只配置INPUT.OUTPUT和FORWORD都是ACCEPT的规则 一.检查iptabl ...

  9. Qt之布局管理器

    简述 Qt的布局系统提供了一个简单的和强有力的方式,来自动排列窗口子控件布局. 所有QWidget子类可以使用布局来管理他们的子控件.QWidget::setLayout()函数可以为一个控件布局.当 ...

  10. TCP/IP、UDP、 Http、Socket的差别

    网络由上往下分为: 表示层和应用层 :HTTP协议(基于传输层的TCP协议,主要解决怎样包装数据) 会话层 传输层: TCP协议(基于网络层的IP协议).TPC/IP协议(主要解决数据怎样在网络中传输 ...