java学习笔记
图灵完备:所有的通用编程语言和现代计算机的指令集都是图灵完备的语言,有循环执行语句,判断分支语句等。
如果是图灵完备的,它(计算机设备)有能力执行条件跳转(if、while、goto语句)以及改变内存数据。
文章目录
前言
一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。
- 对象(object):对象是类的一个实例,有状态和行为。
- 类(class):类是一个模板,它描述一类对象的行为和状态。
- 方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。
- 实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。
一、java数据类型
1.基本数据
Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
- byte:byte 数据类型是8位、有符号的,以二进制补码表示的整数;最小值是-128,最大值是127, byte 变量占用的空间只有 int 类型的四分之一。例子:
byte a = 100;
byte b = -50;
- short:short 数据类型是 16 位、有符号的以二进制补码表示的整数,最小值是-32768,最大值是32767,一个short变量是int型变量所占空间的二分之一,例子:
short s = 1000;
short r = -20000;
- int:int 数据类型是32位、有符号的以二进制补码表示的整数,例子:
int a = 100000;
int b = -200000;
- long:long 数据类型是 64 位、有符号的以二进制补码表示的整数,x例子:
long a = 100000L;
long b = -200000L;
- float:float 数据类型是单精度、32位、符合IEEE 754标准的浮点数,默认值是 0.0f;例子:
float a=23.3f;
- double:double 数据类型是双精度、64 位、符合IEEE 754标准的浮点数;例子:
double d=123.67
- boolean:只有两个取值:true 和 false;
boolean result1=true;
boolean result2=false;
- char:char 数据类型可以储存任何字符;
char ch='a';
2.引用数据类型
- 在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。
- 对象、数组都是引用数据类型。
- 所有引用类型的默认值都是null。
- 一个引用变量可以用来引用任何与之兼容的类型。
3.常量
常量在程序运行时是不能被修改的。
在 Java 中使用 final 关键字来修饰常量,声明方式和变量类似:
final double PI = 3.1415927;
-
自动类型转换:整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。转换从低级到高级:byte,short,char—> int —> long—> float —> double
-
强制类型转换
-
条件是转换的数据类型必须是兼容的。
-
格式:(type)value type是要强制类型转换后的数据类型 实例:
int i1=23;
byte b=(byte)i1;
double d1=35.2
int i2=(int)d1;
4.数组
- 声明数组
double[] myList; // 首选的方法
或
double myList[]; // 效果相同,但不是首选方法
- 创建数组
dataType[] arrayRefVar = new dataType[arraySize];
或
dataType[] arrayRefVar = {value0, value1, ..., valuek};
- 处理数组
数组的元素类型和数组的大小都是确定的,所以当处理数组元素时候,我们通常使用基本循环或者 For-Each 循环。
double[] myList = {1.9, 2.9, 3.4, 3.5};
// 打印所有数组元素
for (int i = 0; i < myList.length; i++) {
System.out.println(myList[i] + " ");
}
// 计算所有元素的总和
double total = 0;
for (int i = 0; i < myList.length; i++) {
total += myList[i];
}
System.out.println("Total is " + total);
// 查找最大元素
double max = myList[0];
for (int i = 1; i < myList.length; i++) {
if (myList[i] > max) max = myList[i];
}
System.out.println("Max is " + max);
- For-Each 循环
JDK 1.5 引进了一种新的循环类型,被称为 For-Each 循环或者加强型循环,它能在不使用下标的情况下遍历数组。
语法格式如下:
for(type element: array)
{
System.out.println(element);
}
二.循环结构
1.主要循环结构
Java中有三种主要的循环结构:
- while 循环
- do…while 循环
- for 循环
2.两个关键字
java循环结构中的两个关键字:
- break 跳出最里层的循环,并且继续执行该循环下面的语句。
- continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。
3.条件语句
- if…else语句
if 语句后面可以跟 else 语句,当 if 语句的布尔表达式值为 false 时,else 语句块会被执行。
public class Test {
public static void main(String args[]){
int x = 30;
if( x == 10 ){
System.out.print("Value of X is 10");
}else if( x == 20 ){
System.out.print("Value of X is 20");
}else if( x == 30 ){
System.out.print("Value of X is 30");
}else{
System.out.print("这是 else 语句");
}
}
}
- switch case语句
switch case 执行时,一定会先进行匹配,匹配成功返回当前 case 的值,再根据是否有 break,判断是否继续输出,或是跳出判断。
switch(grade)
{
case 'A' :
System.out.println("优秀");
break;
case 'B' :
case 'C' :
System.out.println("良好");
break;
case 'D' :
System.out.println("及格");
break;
case 'F' :
System.out.println("你需要再努力努力");
break;
default :
System.out.println("未知等级");
}
System.out.println("你的等级是 " + grade);
三.常用的类
1.Number & Math 类
- xxxValue()
将 Number 对象转换为xxx数据类型的值并返回 - compareTo()
将number对象与参数比较。 - equals()
判断number对象是否与参数相等。 - valueOf()
返回一个 Number 对象指定的内置数据类型 - toString()
以字符串形式返回值。 - parseInt()
将字符串解析为int类型。 - abs()
返回参数的绝对值。 - ceil()
返回大于等于( >= )给定参数的的最小整数,类型为双精度浮点型。 - max()
返回两个参数中的最大值。 - min()
返回两个参数中的最小值 - pow()
返回第一个参数的第二个参数次方。 - sqrt()
求参数的算术平方根。 - random()
返回一个随机数。
floor,round 和 ceil 实例:
public class Main {
public static void main(String[] args) {
double[] nums = { 1.4, 1.5, 1.6, -1.4, -1.5, -1.6 };
for (double num : nums) {
test(num);
}
}
private static void test(double num) {
System.out.println("Math.floor(" + num + ")=" + Math.floor(num));
System.out.println("Math.round(" + num + ")=" + Math.round(num));
System.out.println("Math.ceil(" + num + ")=" + Math.ceil(num));
}
}
2.String 类
- char charAt(int index)
返回指定索引处的 char 值 - boolean equals(Object anObject)
将此字符串与指定的对象比较。 - String concat(String str)
将指定字符串连接到此字符串的结尾。 - int compareTo(String anotherString)
按字典顺序比较两个字符串。 - int indexOf(int ch)
返回指定字符在此字符串中第一次出现处的索引。 - int indexOf(String str)
返回指定子字符串在此字符串中第一次出现处的索引。 - int length()
返回此字符串的长度。 - String substring(int beginIndex)
返回一个新的字符串,它是此字符串的一个子字符串 - isEmpty()
判断字符串是否为空。 - contains(CharSequence chars)
判断是否包含指定的字符系列。 - String toUpperCase()
使用默认语言环境的规则将此 String 中的所有字符都转换为大写。 - String toLowerCase()
使用默认语言环境的规则将此 String 中的所有字符都转换为小写。 - char[] toCharArray()
将此字符串转换为一个新的字符数组。
3.StringBuffer 类
-
public StringBuffer append(String s)
将指定的字符串追加到此字符序列。 -
public StringBuffer reverse()
将此字符序列用其反转形式取代。 -
public delete(int start, int end)
移除此序列的子字符串中的字符。 -
public insert(int offset, int i)
将 int 参数的字符串表示形式插入此序列中。 -
replace(int start, int end, String str)
使用给定 String 中的字符替换此序列的子字符串中的字符。
4.Scanner 类
- java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。
例子:
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// next方式接收字符串
System.out.println("next方式接收:");
// 判断是否还有输入
if (scan.hasNext()) {
String str1 = scan.next();
System.out.println("输入的数据为:" + str1);
}
scan.close();
}
}
- next() 与 nextLine() 区别
- next():
1、一定要读取到有效字符后才可以结束输入。
2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
4、next() 不能得到带有空格的字符串。 - nextLine():
1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
2、可以获得空白。
总结
以上是总结了java常用的基础语法,还有许多语法需要进一步学习,最后用一道题目来练习java的语法,题目与解析可查看如下博客:
java与水仙花数