第一章 语言基础
一.基本介绍
1.JVM:JAVA虚拟机(Java Virtual Machine)
功能:执行java语言
JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
2.JDK:Java开发工具包(java Development Kit):没有JDK,无法编译JAVA应用程序,JDK是整个JAVA开发核心。包含JRE
3.JRE:Java运行环境(Java Runtime Environment)包括java Runtime Environment和java Plug-sn
java三步走:
1.编写源代码 xxx.java
2.编写成字节码文件 xxx.class javac(jdk)
3.运行 java(jre)
psvm Alt+/快捷键
sout Alt+/快捷键
二.基本数据类型
1.变量:只可以发生改变的量
2.变量的定义:
数据类型 变量名 [=值];
(变量定义三要素:数据类型 变量名 值)
a:变量名:变量的名字
规则:字母,数字,_(下划线)以及$,其中数字不能在首位,不能使用关键字和保留字;
规范:首字母小写,名词,驼峰userAge
b:数据类型:
1)基本数据类型(原始数据类型):只有8个
整型:byte(-128~127) short int long
浮点型:float(带f/F) double(小数默认)
字符型:char ’ 'or ASCII
布尔型:boolean : true(1) or false(0) eg:boolean b=true;
2)引用数据类型(自定义数据类型):无数个
0的ASCII值为48
String str 定义字符串
(1)变量的三要素:类型 名称 值
变量必须赋值,如果不赋值则无法使用
eg:
long m;//声明一个变量,类型为long
m=88;//初始化 第一次赋值
System.out.println(m);
(2)运算符
1.算术运算符:= - * / %(+:a:求和(纯数字运算);b:拼接(非数字运算))
public class Demob {
public static void main(String[] args) {
int a=1;
int b=5;
int c=a+b;
int d=a-b;
int e=a*b;
int f=a/b;
int g=a%b;
System.out.println(c);
System.out.println(d);
System.out.println(e);
System.out.println(f);
System.out.println(g);
}
}
结果:
6
-4
5
0
1
2.赋值运算符:“=”将等号右边的表达式的结果赋给等号左边的变量 操作的是地址
3.逻辑运算符:&&(并且) ||(或者) !(求反) 逻辑运算符的结果一定是一个boolean类型
4.关系运算符:< > <= >= ==(比较的事两个数值的内存地址是否相等) != 得到的结果是boolean类型
//Math.random() 随机数[0,1)
public class Demob {
public static void main(String[] args) {
int a=(int)Math.random()*10+1;
int b=(int)Math.random()*10+1;
boolean b1=a>b;
boolean b2=a<b;
boolean b3=a==b;
System.out.println(b1);
System.out.println(b2);
System.out.println(b3);
System.out.println(a);
System.out.println(b);
}
}
5.二元运算符:a++(先用后加) ++a(先加后用) --a a–
+= -= *= /= %=
6.三目表达式:表达式4=表达式1?表达式2:表达式3;
三.类型转换
1.自动类型转换:int float double---->int double
原则:类型兼容 小范围类型自动转换为大范围类型
int 与char 之间的关系 ASCII
int–>char 错误 char–>int 正确(int可以不可以转换成char,char可以转换成int)
其他类型与String之间的关系 小窍门:String str=b1+"";
2.强制类型转换:变量=(目标类型)值:有可能出错
四.输出操作,转义字符
System.out.println(自带换行);
System.out.print(不带换行);
System.err.println(红字输出);
System.out.println("a\nb");\n转义字符
System.out.println("a\tb");\n制表位
\"-->" \'-->' \\--l>\
五.输入
1.导包(出处)
import java.util,Scanner;
2.产生一个键盘对象
Scanner 键盘名=new Scanner(System.in);
3.接收输入 以空格或者回车为一次输入
int a=键盘名.nextInt();
double b =键盘名.nextDouble();
String c=键盘名.nextLine();/键盘名.next();
六.分支结构
1.if
if(条件){
操作;
}
- if-else
if(条件){
操作1;
}else{
操作2;
}
3.多重if
if(条件1){
操作1;
}else if(条件2){
操作2;
}[else{
操作3;
}]
4.switch-case
switch(变量){
case 常量:
操作1;
break;
…
default:
操作n;
break;
}
注意事项:
1.分支的常量值必须唯一不能相同;
2.分支中的break不能省略,否则会出现语义问题;
3.分支中的常量类型局限于:int char String;
1)循环结构-while循环
循环:重复执行某些代码指令的结构是循环结构,循环结构由条件和操作组成
1.while(条件){
操作;
}//流程图:菱形为判断条件,矩形为执行操作
先判断条件,条件成立时,执行操作,执行完操作后继续判断条件,依次循环,直到条件不成立。
2.do-while循环
do{
操作;
}while(条件);
执行一次操作,然后进入循环,条件为真时继续操作,条件为假,结束操作。
循环结构——问题探讨:打印*号
public class Demoa {
public static void main(String[] args) {
int num = 0;//*号个数
int sum = 0;//*号个数
int i=1;
while (num<28) {
if(num==sum){
sum+=i;行数+之前的*号数
i++;//行数+1
if(num!=0){
System.out.println(" ");
}
}
System.out.print("* ");
num++;
}
}
}
运行结果:
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
Process finished with exit code 0
3.for循环
for(变量初始化;条件;改变){
操作;
}
注意事项:
1):for(省略)–> 死循环
2):少条件–>死循环
3):for(定义变量初始化)与在for外部定义变量初始化的区别
在for(定义int i=0){}外部不能使用;int i=0 for(){}外部可以使用
循环中的关键字:
1.continue:结束当次循环,当次循环后边的内容不再执行,开始下一次循环//注意:continue必须在程序体的最后一行!
public class Demob {
public static void main(String[] args) {
int i;
int num=0;
for(i=1;i<=100;i++){
if(i%3==0){
num+=i;
continue;
}
}
System.out.println(num);
}
}
输出100以内能被3整除数的和:1683
2.break:终止当次循环,执行循环外的内容.
3.多重循环
4.循环命名
名字:循环,使用时break 名字或者continue 名字
eg:
a:for(i=1;i<10;i++) {
for (j = 1; j <i; j++) {
s = j * i;
System.out.println(j + "*" + i + "=" + s);
break a;
}
}