基本语法上

  • 认识java
  • 变量
  • 常量
  • 数据类型
  • String
    • 计算字符串长度
    • 字符串比较
    • 字符串连接
    • 字符串常用提取方法
    • StringBuilder
  • 运算符
    • 算术运算符
    • 位运算符
    • 逻辑运算符
    • 关系运算符
    • 运算符优先级
  • 关键字和语句
  • 方法
  • IDE

认识java


JVM 叫 Java 虚拟机,它也是整个 Java 技术的核心。Java 语言的跨平台就多亏了 JVM。

JDK 叫 Java 开发工具包,没有 JDK 就没有办法进行 Java 程序的开发。

JRE 叫 Java 运行环境,如果我们需要运行一个 Java 程序,就得安装 JRE。

JDK、JRE 和 JVM 之间的关系:

变量

在 Java 中,变量需要先声明 (declare) 才能使用。在声明中,说明变量的类型,赋予变量以特别名字,以便在后面的程序中调用它。你可以在程序中的任意位置声明变量,语法格式如下:

数据类型 变量名称;

例如:

int a = 1;

例子:

public class VarTest
{public static void main(String[] args){System.out.println("Define a variable a is ");int a; //声明变量aa = 5;System.out.println(a);  // 打印一个整数a}
}

结果:

常量

常量的值是不能被修改的。
Java 中的 final 关键字可以用于声明属性(常量),方法和类。当 final 修饰属性时,代表该属性一旦被分配内存空间就必须初始化,它的含义是“这是无法改变的”或者“终态的”。在变量前面添加关键字 final 即可声明一个常量。在 Java 编码规范中,要求常量名必须大写

final 数据类型 常量名 = 值;

例如:

final double PI = 3.14;

常量也可以先声明,再进行赋值,但只能赋值一次,比如:

final int FINAL_VARIABLE;
FINAL_VARIABLE = 100;
public class FinalVar {public static void main(String[] args) {final String FINAL_STRING="shiyanlou";System.out.println(FINAL_STRING);}
}

数据类型


注释:
对于short数据类型:

1个字节由8位二进制组成,2个字节就是16位二进制

有符号型的最高比特位用于表示正负号。所以
正数为:正号+15个比特的1 (2^15)
即:0,111,1111,1111,1111
0----32767
负数为:
-32768 — -1

注释:
bool型和byte型 1字节
short型和char型 2字节
int型和float型 4字节
long型和double型 8字节

整数
byte、short、int、long 四种基本数据类型表示整数,需要注意的是 long 类型,使用 long 修饰的变量需要在数值后面加上 L 或者 l,比如 long num = 1L;,一般使用大写 L,为了避免小写 l 与数值 1 混淆。

浮点数
float 和 double 类型表示浮点数,即可以表示小数部分。需要注意的是 float 类型的数值后面需要加上 F 或者 f,否则会被当成 double 类型处理。double 类型的数值可以加上 D 或 d,也可以不加。

char 类型
char 类型用于表示单个字符。需要将字符用单引号括起来char a = ‘a’,char 可以和整数互相转换,如果字符 a 也可以写成char a = 97。也可以用十六进制表示char a = ‘\u0061’。

boolean 类型
boolean 类型(布尔类型)用于表示真值 true或者假值 false,Java 中布尔值不能和整数类型或者其它类型互相转换。

String

Java 中使用 String 类来定义一个字符串,字符串是常量,它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。

String 对象的初始化格式有如下两种:

String s0 = "abc";
String s1 = new String ("abd");

计算字符串长度

length() 方法:

//方法原型
public int length(){}

调用方法:字符串标识符.length(); 返回一个 int 类型的整数(字符串中字符数,中文字符也是一个字符)。例如:

String s1 = "abc";
String s2 = "Java语言";
int s1 = s1.length();
int s2 = s2.length();

则变量 len1 的值是 3,变量 len2 的值是 6。

字符串比较

equals() 方法,该方法的作用是判断两个字符串对象的内容是否相同。如果相同则返回 true,否则返回 false。

equals() 方法比较是从第一字符开始,一个字符一个字符依次比较。

如果想忽略掉大小写关系,比如:java 和 Java 是一样的,那怎么办呢?可以调用 equalsIgnoreCase() 方法,其用法与 equals() 一致,不过它会忽视大小写。

比如:

public class StringTest {public static void main(String[] args){String s = new String("Java");String m = "java";System.out.println("用equals()比较,java和Java结果为"+s.equals(m));System.out.println("用equalsIgnoreCase()比较,java和Java结果为"+s.equalsIgnoreCase(m));}
}


而使用 “==” 比较的是两个对象在内存中存储的地址是否一样。例如:

         String s1 = "abc";String s2 = new String("abc");boolean b = (s1 == s2);

则变量 b 的值是 false,因为 s1 对象对应的地址是 “abc” 的地址,而 s2 使用 new 关键字申请新的内存,所以内存地址和 s1 的 “abc” 的地址不一样,所以获得的值是 false。

字符串连接

字符串连接有两种方法:

1.使用 +,比如 String s = "Hello " + “World!”。
2.使用 String 类的 concat() 方法。

String s0 = new String("Hello ");
String s1 = "World" + "!";   //+号连接
String s2 = s0.concat(s1); //concat()方法连接
System.out.println(s2);

而且使用 + 进行连接,不仅可以连接字符串,也可以连接其他类型。但是要求进行连接时至少有一个参与连接的内容是字符串类型。

charAt() 方法:
charAt() 方法的作用是按照索引值(规定字符串中第一个字符的索引值是 0,第二个字符的索引值是 1,依次类推),获得字符串中的指定字符。例如:

String s = "abc";
char c = s.charAt(1);

则变量 c 的值是 ‘b’。

字符串常用提取方法


subString() 截取字符串

trim() 方法用于删除字符串的头尾空白符,空白符包括:空格、制表符 tab、换行符等其他空白符等.

说明:在字符串中,第一个字符的索引为 0,子字符串包含 beginindex 的字符,但不包含 endindex 的字符。

public class StringTest {public static void main(String[] args) {String s = "abcdefabc";System.out.println("字符a第一次出现的位置为"+s.indexOf('a'));System.out.println("字符串bc第一次出现的位置为"+s.indexOf("bc"));System.out.println("字符a最后一次出现的位置为"+s.lastIndexOf('a'));System.out.println("从位置3开始到结束的字符串"+s.substring(3));System.out.println("从位置3开始到6之间的字符串"+s.substring(3,6));}
}

StringBuilder

String 是无法被修改的,对 String 的修改,其实是新建了一个 String 对象。如果需要修改字符串的内容,可以使用 StringBuilder。它相当于一个存储字符的容器。

初始化格式有以下三种:

构造一个不包含任何字符且初始容量为 16 的 StringBuilder
StringBuilder a = new StringBuilder();

构造一个不包含任何字符且容量为 cap 的 StringBuilder
StringBuilder b = new StringBuilder(int cap);

构造一个 StringBuilder,内容初始化为 str
StringBuilder c = new StringBuilder(String str);
下面我们来演示一下:

注释
cap = capacity 容量
append() 相当于 ”+“
s1.toString() 返回s1字符串内容
\t 转义字符

public class StringBuilderTest {public static void main(String[] args){StringBuilder s1 = new StringBuilder();s1.append("java");StringBuilder s2 = new StringBuilder(5);StringBuilder s3 = new StringBuilder("shiyanlou");System.out.println("s1:" + s1.toString() + "\tcap:" + s1.capacity());System.out.println("s2:" + s2.toString() + "\tcap:" + s2.capacity());System.out.println("s3:" + s3.toString() + "\tcap:" + s3.capacity());}
}


其中 s3 的 capacity 为 25 是因为初始容量 16 + shiyanlou 的长度 9。

运算符

运算符顾名思义是一种符号,它是连接一个以上的操作符,实现某种功能的运算。

算术运算符

public class ArithmeticOperation {public static void main(String args[]) {int a = 5;int b = 3;int c = 3;int d = 3;System.out.println("a + b = " + (a + b));System.out.println("a - b = " + (a - b));System.out.println("a * b = " + (a * b));System.out.println("a / b = " + (a / b));System.out.println("a % b = " + (a % b));System.out.println("a++ = " + (a++));System.out.println("++a = " + (++a));System.out.println("b-- = " + (b--));System.out.println("--b = " + (--b));System.out.println("c++ = " + (c++));System.out.println("++d = " + (++d));}
}

位运算符

Java 定义了位运算符,应用于整数类型 (int),长整型 (long),短整型 (short),字符型 (char),和字节型 (byte) 等类型。位运算时先转换为二进制,再按位运算。

表格中的例子中,变量 a 的值为 60(二进制:00111100),变量 b 的值为 13(二进制:00001101):

public class BitOperation {public static void main(String args[]) {int a = 60;int b = 13;System.out.println("a & b = " + (a & b));System.out.println("a | b = " + (a | b));System.out.println("a ^ b = " + (a ^ b));System.out.println("~a = " + (~a));System.out.println("a << 2 = " + (a << 2));System.out.println("a >> 2 = " + (a >> 2));System.out.println("a >>> 2 = " + (a >>> 2));}
}

逻辑运算符

逻辑运算符是通过运算符将操作数或等式进行逻辑判断的语句。

表格中的例子中,假设布尔变量 a 为真(true),变量 b 为假(false):

&& 与 || 是具有短路性质,当按优先级顺序计算到当前表达式时,表达式的结果可以确定整个表达式的结果时,便不会继续向后进行判断和计算,而直接返回结果。

例如:当使用 && 逻辑运算符时,在两个操作数都为 true 时,结果才为 true,但是当得到第一个操作为 false 时,其结果就必定是 false,这时候就不会再判断第二个操作了。在计算表达式 (a & b) && (a | b) 时,首先计算 a & b 得到了 false,因为之后是 &&,任何值与 false 进行与操作都是 false,所以可以不用再计算下去,而直接返回 a & b 的结果 false。

public class LogicOperation {public static void main(String args[]) {boolean a = true;boolean b = false;System.out.println("a && b = " + (a && b));System.out.println("a || b = " + (a || b));System.out.println("!a = " + (!a));System.out.println("a ^ b = " + (a ^ b));}
}

关系运算符

关系运算符生成的是一个 boolean(布尔)结果,它们计算的是操作数的值之间的关系。如果关系是真实的,结果为 true(真),否则,结果为 false(假)。

表格中的例子中,假设变量 a 为 3,变量 b 为 5:

语法格式:

布尔表达式 ?表达式 1 : 表达式 2;

运算过程:如果布尔表达式的值为 true,则返回表达式 1的值,否则返回表达式 2的值。

public class RelationalOperation {public static void main(String args[]) {int a = 3;int b = 5;System.out.println("a == b = " + (a == b));System.out.println("a != b = " + (a != b));System.out.println("a > b = " + (a > b));System.out.println("a < b = " + (a < b));System.out.println("a >= b = " + (a >= b));System.out.println("a <= b = " + (a <= b));System.out.println("a > b ? a : b = " + (a > b ? a : b));}
}


强调:

1.==和 != 适用于所有的基本数据类型,其他关系运算符不适用于 boolean,因为 boolean 值只有 true 和 false,比较没有任何意义。
2. ==和 != 也适用于所有对象,可以比较对象的引用是否相同。

引用:Java 中一切都是对象,但操作的标识符实际是对象的一个引用。

运算符优先级



Scanner :扫描仪、 扫描设备

在 /home/project/ 目录下新建文件 Sum.java,你需要实现以下需求:

获取控制台输入的两个整型参数。
输出两个整型参数和。
比如输入 3 和 4 对应输出 7。

示例:

输入:34
输出:7

提示:Scanner 类可以获取控制台输入的内容,但是需要先导入否则无法使用。

import java.util.Scanner;

然后就可以获取输入的值了。

Scanner in =new Scanner(System.in);
//获取int值
int x1=in.nextInt();
int x2=in.nextInt();


关键字和语句

关键字
Java 的关键字对 Java 的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名。

Java 关键字有如下表所列,目前共有 50 个 Java 关键字,其中,“const” 和 “goto” 这两个关键字在 Java 语言中并没有具体含义。

方法

Java 中的方法,可以将其看成一个功能的集合,它们是为了解决特定问题的代码组合。

方法的定义语法:

访问修饰符 返回值类型 方法名(参数列表) {方法体
}

比如:

public void functionName(Object arg) {System.out.println("Hello World.");
}

在上面的语法说明中:

1.访问修饰符: 代表方法允许被访问的权限范围, 可以是 public、protected、private 或者省略(default) ,其中 public 表示该方法可以被其他任何代码调用。

2.返回值类型: 方法返回值的类型,如果方法不返回任何值,则返回值类型指定为 void (代表无类型);如果方法具有返回值,则需要指定返回值的类型,并且在方法体中使用 return 语句返回值。

3.方法名: 是方法的名字,必须使用合法的标识符。

4.参数列表: 是传递给方法的参数列表,参数可以有多个,多个参数间以逗号隔开,每个参数由参数类型和参数名组成,以空格隔开。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。

5.方法体: 方法体包含具体的语句,定义该方法的功能。

根据方法是否带参、是否带返回值,可将方法分为四类:

无参无返回值方法
无参带返回值方法
带参无返回值方法
带参带返回值方法
当方法定义好之后,需要调用才可以生效,我们可以通过 main 方法(main 方法是 Java 程序的入口,所以需要用它来调用)来调用它,比如:

public class MethodDemo {public static void main(String[] args){method();}//这里要加上 static 关键字 因为静态方法只能调用静态方法public static void method(){System.out.println("方法被调用");}
}


public class MethodTest {public static void main(String[] args) {methodDemo();}public static void methodDemo() {System.out.println("Hello Shiyanlou");}
}

IDE

Java 常见的 IDE 有 IDEA,Eclipse 等,同学们可以任选一种安装在本地学习,在实验楼环境中并不会使用这两种 IDE,而是使用 WebIDE 进行开发,同学们需要将这两种 IDE 之一装在本地进行学习。

Java简明教程-基本语法上相关推荐

  1. Realm Java 简明教程(1)

    Realm Java 简明教程 Realm 是一个轻量的android版本的数据存储库 Realm 是一个轻量的android版本的数据存储库,快速简洁的操作方式,使得其优势得以凸显,我们来看下一个实 ...

  2. java程序设计简明教程张晓龙_Java网络编程简明教程

    Java网络编程简明教程 网络编程 计算机网络相关概念 计算机网络是两台或更多的计算机组成的网络,同一网络内的任意两台计算机可以直接通信,所有计算机必须遵循同一种网络协议. 互联网 互联网是连接计算机 ...

  3. Java手机游戏开发简明教程 (SunJava开发者认证程序员 郎锐)

    原文发布时间为:2008-07-30 -- 来源于本人的百度文章 [由搬家工具导入] Java手机游戏开发实例简明教程 (SunJava开发者认证程序员 郎锐) 一.手机游戏编写基础 1.手机游戏设计 ...

  4. java 大学简明教程_Simply-Java 《JAVA大学简明教程:实例程序设计》例子及习题源代码 - 下载 - 搜珍网...

    JAVA大学简明教程:实例程序设计/附书源代码/Tutorial01/MovingShapes/BoundedShape.class JAVA大学简明教程:实例程序设计/附书源代码/Tutorial0 ...

  5. 一周极客热文:Java 8简明教程

    该教程将带领你一步一步地认识这门语言Java 8的新特性.通过简单明了的代码示例,你将会学习到如何使用默认接口方法,Lambda表达式,方法引用和重复注解.看完这篇教程后,你还将对最新推出的API有一 ...

  6. java程序设计简明教程答案张晓龙_java2简明教程部分课后复习题答案

    JAVA2 简明教程习题答案 第二章 课堂习题 : public class Main { public static void main(String[] args) { //initializat ...

  7. 视频教程-MyBatis简明教程-Java

    MyBatis简明教程 就职于国内知名在线互联网旅游公司,10+互联网开发经验,精通前后端开发 刘志强 ¥29.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 APP订 ...

  8. Java Web 简明教程

    点此查看 所有教程.项目.源码导航 1. 前言 本教程用于介绍Java Web开发入门的方方面面,包括开发环境.工具.网页.Java.数据库等. 本教程写于2016年底,一些内容相对比较陈旧了,新版的 ...

  9. python多态_Python 简明教程 21,Python 继承与多态

    程序不是年轻的专利,但是,它属于年轻. 目录 目录 我们已经知道封装,继承和多态 是面向对象的三大特征,面向对象语言都会提供这些机制. 1,封装 在这一节介绍类的私有属性和方法的时候,我们已经讲到过封 ...

最新文章

  1. DevExpress.XtraReports打印
  2. 与空连接相关的几条命令
  3. 一种电子病历系统软件框架思想
  4. 标准氨基酸和质子化氨基酸 三字母 单字母 对应表
  5. Google智能生态链的演进路径
  6. hdu 4004 二分查找
  7. 对python装饰器几种常见方式的使用与理解
  8. 简单的加密/解密算法_/c++
  9. python中的help和dir_Python中help()和dir()函数的用法是什么?
  10. [转载] python字符串转化为16进制数_python实用知识,数值类型和进制整数的转换
  11. python网络蜘蛛
  12. 思维导图的用处是什么?绘制思维导图技巧分享
  13. Learn OpenGL 笔记6.2 Gamma Correction(伽马校正)
  14. 从二维码图片到镂空二维码stl模型(1)
  15. 库克牛津大学演讲:AR 比 VR更深刻,领导力就是让沉默的人说话
  16. Docker常用命令(启动、镜像相关、容器相关、文件拷贝、目录挂载、查看容器IP地址、Docker备份与恢复)
  17. 2022网鼎杯白虎组misc830题解
  18. How to debug apps on Kindle Fire on OS X
  19. 双极结型晶体管——三极管理解
  20. 2018全国普通高校学科竞赛排行榜发布

热门文章

  1. Docker和K8S
  2. 02 - pyrebox shell
  3. 飞凌FCU1104嵌入式控制单元JAVA读取串口
  4. 闪蚁市场:全球首个把时间交易与区块链结合的Dapp
  5. for in和for of的区别
  6. html中animate动画,animate.css动画速度控制
  7. Android开源益智游戏“斗地主”单机版源代码
  8. 56-基于51单片机的IC卡智能水表设计
  9. Excel清除隐藏的引号或空格
  10. 根据商品ID查询出单个商品