目录
之前小编一直和大家分享C语言方面的知识,如果有需要的同学可以转战小编的其他博客,接下来就让小编带你一起来走进Java吧!在这节中小编主要是讲解一些Java的基础知识,以及Java与C语言不同的地方,带你一起入门Java。带你一起体验詹姆斯·高斯林说的:“Write once,Run anywhere!”。
Java是一种优秀的程序设计语言,它还是一个有一系列计算机软件和规范形成的技术体系。这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境 ,并广泛用于嵌入式系统、移动中都阿奴、企业服务器、大型的等各种场合。
简单性、面向对象、分布式(微服务)、健壮性、安全性、体系结构中立、可移植性、解释性、高性能、多线程、动态性。
示例:
类与方法的关系图:
解释:
源文件(扩展名为*.java):源文件带有类的定义。类用来表示程序的一个组件,小程序或许只会有一个类。类的内容必须包含在花括号里面。
类:类中带有一个或多个方法。方法必须在类的内部声明。
方法:在方法的花括号中编写方法应该执行的语句。
总结:类存在于源文件里面,方法存在于类中,语句存在于方法中。
注意:
在一个源文件中只能有一个public修饰的类,而且源文件名字必须与public修饰的类名字相同。
Java的运行环境:
JVM:是Java的运行环境。
程序运行的过程:
我们知道在下载Java时我们先要下载JDK,这个是Java的开发工具,那么在JDK下面还有JRE,JRE下来才是JVM。下面给大家解释一下它们三个的关系和概念:
JDK:(Java Development Kit)Java开发工具包,提供给Java程序员使用,包含了JRE,同时还包含了编译器,javac与自带的调试工具Jconsole、istack等。
JRE:(Java Runtime Environment):Java运行时环境,包含了JVMJava基础类库,是使用Java语言编写程序运行的所需的环境。
JVM:Java虚拟机,运行Java代码。
注释是为了让代码更容易被读懂而附加的描述信息,不参与编译运行,但是却非常重要。
块注释:
- /*
- 这是块注释
- */
行注释:
//这是行注释
文档注释:
- /**
-
- 这是文档注释
-
- */
注释规范:
注意:
在程序中由用户给类名、方法名或者变量名所取的名字。
规则:
标识符中可以包含:字母、数字以及下划线和$符号等等。
一般情况下:
注意:
标识符不能以数字开头,也不能是关键字,且严格区分大小写。
关键字是由Java语言提前定义好的,有特殊含义的标识符,或者保留字。
注意:用户不能使用关键字定义标识符!!!
基本数据类型有四类八种:
7.数据类型
用于定义访问权限修饰符的关键字 | ||||
private | protected | pubilc | ||
用于定义类,函数,变量修饰的关键字 | ||||
abstract | final | static | synchronize | |
用于定义建立实例及引用实例,判断实例的关键字 | ||||
extends | implements | |||
用于异常处理的关键字 | ||||
try | catch | finally | throw | throws |
用于包的关键字 | ||||
package | import | |||
其他修饰关键字 | ||||
native | strictfp | transient | volatile | assert |
在数据类型中分为两大类:
那么下面我们就分别给大家介绍一下,但是这里着重讲基本数据类型。
四类:整型、浮点型、字符型、布尔型。
八种:
数据类型 | 关键字 | 内存占用 | 范围 |
字节型 | byte | 1字节 | -128~127 |
短整型 | short | 2字节 | -32768~32767 |
整型 | int | 4字节 | -2^31 ~ 2^31 - 1 |
长整型 | long | 8字节 | -2^63 ~ 2^63 - 1 |
单精度浮点型 | float | 4字节 | 有范围,一般不关注 |
双精度浮点型 | double | 8字节 | 有范围,一般不关注 |
字符型 | char | 2字节 | 0 ~ 65535 |
布尔型 | boolean | 没有明确规定 | true 和 false |
注意:
8种基本数据类型所对应的包装类分别是:
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
char | Character |
注意:其中要特别注意int和char两个类型所对应的包装类。
其中包装类的概念我们在后期进行介绍,这里就简单理解为包装类就是各个类所对应的类类型是各个类的加大版,功能比原本的类更加强大。
前期我们就只接触两种String和Byte,后期我们再对它们进行讨论,这次我们主要对基本数据类型进行讨论。
在程序中,除了有始终不变的常量外,有些内容可能会经常改变,比如:人的年龄、身高、成绩等等,对于这些经常改变的内容,在Java程序中,称为变量,而数据类型就是用来定义不同变量的。
语法格式:
数据类型 变量名 = 初始值;
int:
注意:
long:
注意:
float:
代码如下所示:
- public class Test3 {
- public static void main(String[] args) {
- //数字后面加f
- float f1 = 1.2f;
- System.out.println(f1);
- //数字后面加F
- float f2 = 1.2F;
- System.out.println(f2);
- }
- }
结果如下所示:
由于float所表示的范围比较小所以一般在工程中用到的是double类型的。
double:
代码如下所示:
- public class Test4 {
- public static void main(String[] args) {
- //当两个整数相除时会使得小数部分丢失
- int a = 1;
- int b = 2;
- System.out.println(a / b);
- //转换成浮点型后就不会丢失了
- double d1 = 1.0;
- double d2 = 2.0;
- System.out.println(d1 / d2);
- }
- }
结果如下所示:
注意:
char:
代码如下所示:
- public class Test1 {
- public static void main(String[] args) {
- char ch1 = '和';
- char ch2 = 'A';
- System.out.println(ch1);
- System.out.println(ch2);
- }
- }
结果如下所示:
注意:
boolean:
代码如下所示:
- public class Test2 {
- public static void main(String[] args) {
- boolean b1 = true;
- boolean b2 = false;
- System.out.println(b1);
- System.out.println(b2);
- }
- }
结果如下所示:
注意:
类型的转换分为两种:
自动类型转换又称为隐式转换,即代码不需要任何处理,在代码编译时,编译器会自动进行处理。
特点:
数据范围小的转换为数据范围大时会自动进行 。
代码如下所示:
- public class Test5 {
- public static void main(String[] args) {
- int a = 100;
- long b = 10L;
- //数据范围小的往数据范围大的转换的时候是自动进行的
- b = a;
- System.out.println(b);
- //如果数据范围大的往数据范围小的转换时,如果不加任何处理编译器就会报错
- //a = b;
- }
- }
结果如下所示:
当进行操作时代码需要进行一定的格式处理,不能自动完成。
代码如下所示:
- public class Test6 {
- public static void main(String[] args) {
- int a = 10;
- float b = 1.0F;
- //如果按照下面的直接赋值的话可能会造成数据丢失,所以编译器就会报错
- //a = b;
- //经过强制类型转换后就不会报错了
- a = (int)b;
- System.out.println(a);
- }
- }
结果如下所示:
注意:
int与long之间,int就会被提升为long。
代码如下所示:
- public class Test7 {
- public static void main(String[] args) {
- int a = 10;
- long b = 20L;
- System.out.println(b / a);
- }
- }
结果如下所示:
我们先来看一下面的这一段代码为什么会报错?
由于是byte和byte都是相同的类型,但是会出现编译报错,原因是虽然a和b都是byte,但是计算a+b时会将a和b先都提升成int型,再进行计算,得到结果也就是int型的故而会出现错误。
正确代码如下所示:
- public class Test8 {
- public static void main(String[] args) {
- byte a = 10;
- byte b = 10;
- byte c = (byte)(a + b);
- System.out.println(c);
- }
- }
结果如下所示:
在C语言中是没有String类型的,但是在Java中我们可以定义一个字符串(String)类型的变量。
代码如下所示:
- public class Test9 {
- public static void main(String[] args) {
- String s1 = "hello ";
- String s2 = "world";
- //通过+可以对字符串进行拼接
- System.out.println(s1 + s2);
- }
- }
结果如下所示:
有些情况下我们需要将字符串和整形数字之间进行转换:
方法一:
通过加“ ”来进行转换。
方法二:
通过String.valueOf()来进行转换。
代码如下所示:
- public class Test10 {
- public static void main(String[] args) {
- int num = 10;
- //方法一:
- String str1 = num + " ";
- System.out.println(str1);
- //方法二:
- String str2 = String.valueOf(num);
- System.out.println(str2);
- }
- }
结果如下所示:
上述是将一个int类型的值转换成String类型的值,那么如何将一个String类型的值转换成一个int类型的值呢?
我们可以通过Integer.parseInt()来进行转换。
代码如下所示:
- public class Test11 {
- public static void main(String[] args) {
- String str1 = "100";
- int num = Integer.parseInt(str1);
- System.out.println(num);
- }
- }
结果如下所示:
简单来说就是对操作数进行操作时的符号,不同运算符操作的含义不同,下面我们就来一一讲解一下,但是与C语言的操作符也没有太大的区别。
基本的s四则运算符:+、-、*、/、%。
下面着重讲解一下取模(%)运算符。
我们直接拿下面的代码来讲解。
代码如下所示:
- public class Test12 {
- public static void main(String[] args) {
- System.out.println(10 % 3);//1
- System.out.println(10 % -3);//1
- System.out.println(-10 % 3);//-1
- System.out.println(-10 % -3);//-1
- }
- }
结果如下所示:
增量运算符有:+=、-=、*=、%=
注意:只有变量才可以使用该运算符,常量不可以使用。
注意:
关系运算符有六个:==、!=、<、>、<=、>=,他们的计算结果是true或者是false。
逻辑运算符必须与布尔表达式进行搭配使用。
逻辑与&&:
语法规定:
表达式1 && 表达式2,左右表达式的结果必须都是boolean类型的。
代码如下所示:
- public class Test13 {
- public static void main(String[] args) {
- int a = 10;
- int b = 20;
- System.out.println(a > 2 && b < 30);
- System.out.println(a > 2 && b > 30);
- System.out.println(a < 2 && b > 30);
- System.out.println(a < 2 && b < 30);
- }
- }
结果如下所示:
特点:
逻辑或 || :
代码如下所示:
- public class Test14 {
- public static void main(String[] args) {
- int a = 10;
- int b = 20;
- System.out.println(a > 2 || b < 30);
- System.out.println(a > 2 || b > 30);
- System.out.println(a < 2 || b < 30);
- System.out.println(a < 2 || b > 30);
- }
- }
结果如下所示:
特点:
&&和|||都遵循短路求值的规则。
我们都知道10/0是一个有问题的计算,在运行的时候编译器就会报错。
那么我们就可以以此来清楚短路求值是怎么求值的。
对于&&运算来说:
1.当前者为真时:
代码如下所示:
- public class Test15 {
- public static void main(String[] args) {
- System.out.println(10 > 20 && 10 / 0 == 0);
- }
- }
结果如下所示:
此时就会发生短路求值。
2.当前者为假时
代码如下所示:
- public class Test16 {
- public static void main(String[] args) {
- System.out.println(10 < 20 && 10 / 0 == 0);
- }
- }
结果如下所示:
对于||来说:
1.当前者为假时
代码如下所示:
- public class Test18 {
- public static void main(String[] args) {
- System.out.println(10 > 20 || 10 / 0 == 0);
- }
- }
结果如下所示:
2.当前者为真时
代码如下所示:
- public class Test17 {
- public static void main(String[] args) {
- System.out.println(10 < 20 || 10 / 0 == 0);
- }
- }
结果如下所示:
表示按二进制位进行运算。
注意:没有无符号左移!!!
条件运算符又叫三目运算符。
格式:表达式1 ?表达式2 : 表达式3
如果表达式1的结果为真则返回值就是表达式2的值,如果为假则返回表达式3 值。
代码如下所示:
- public class Test19 {
- public static void main(String[] args) {
- int a = 10;
- int b = 20;
- int max = 0;
- max = a > b ? a : b;
- System.out.println(max);
- }
- }
结果如下所示:
练习题:
说出下面代码输出的结果:
代码如下所示:
- public class Test20 {
- public static void main(String[] args) {
- System.out.println((true == true) ? (true == true) ? false : true : true);
- }
- }
结果如下所示:
解析:
逻辑控制分为三大结构:
就是按照代码的顺序来执行。
代码如下所示:
- public class Test21 {
- public static void main(String[] args) {
- System.out.println("aaa");
- System.out.println("bbb");
- System.out.println("ccc");
- }
- }
结果如下所示:
我们一般见到的分支结构的语句有if-else和switch。
if-else:
注意:括号中的结果必须是布尔表达式!!!
代码如下所示:
- public class Test22 {
- public static void main(String[] args) {
- int a = 10;
- int b = 20;
- if(a > b) {
- System.out.println("a > b");
- } else if(a == b){
- System.out.println("a == b");
- } else {
- System.out.println("a < b");
- }
- }
- }
结果如下所示:
switch:
代码如下所示:
- import java.util.Scanner;
-
- public class Test23 {
- public static void main(String[] args) {
- Scanner scan = new Scanner(System.in);
- int input = scan.nextInt();
- switch (input) {
- case 1:
- case 2:
- case 3:
- case 4:
- case 5:
- System.out.println("周内");
- break;
- case 6:
- case 7:
- System.out.println("周末");
- break;
- default:
- System.out.println("输入错误");
- break;
- }
- }
- }
结果如下所示:
注意:
循环结构我们知道的有三种:
以循环打印1~10数字为例:
while:
代码如下所示:
- public class Test24 {
- public static void main(String[] args) {
- int i = 1;
- while(i <= 10) {
- System.out.print(i + " ");
- i++;
- }
- }
- }
结果如下所示:
do-while:
代码如下所示:
- public class Test25 {
- public static void main(String[] args) {
- int i = 1;
- do {
- System.out.print(i + " ");
- i++;
- }while (i <= 10);
- }
- }
结果如下所示:
for:
代码如下所示:
- public class Test26 {
- public static void main(String[] args) {
- for (int i = 1; i <= 10; i++) {
- System.out.print(i + " ");
- }
- }
- }
结果如下所示:
这节小编就分享到这里啦!如果想要继续学习Java的同学们及得给小编点赞收藏加关注哦,小编会持续出有关Java方面的知识的,如果文章中有任何错误也欢迎各位大佬及时为小编指点迷津(在此小编先谢过各位大佬啦!)