第二章java的基础用法
文章目录
一、IDE的使用
- IDE集成的开发环境,一般用于提供程序的开发环境的应用
无论是平时用的idea还是eclipse他们都属于IDE
也可以说他们统称IDE
二、注释
1.单行注释
"//"一般我会用他来解释说明放在代码的后面
2.多行注释
"/* */"注释多行的时候,可以一次完成
3.段落注释
"/** */"这个就强了,文档注释,用于为类,方法(函数),属性 功能进行说明,可在调用时提示
三、特殊字符
1.关键字的定义和特点
- 定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)
- 特点:关键字中所有字母都为小写
2.保留字
- 现有Java版本尚未使用,但以后版本可能会作为关键字使用。
- 现在保留字既不能当关键字用也不能当标识符用
eg: goto const
3.标识符:
- Java 对各种变量、方法和类等要素命名时使用的字符序列称为标识符.
规范标识符: - 包名:多单词组成时所有字母都小写:xxxyyyzzz
- 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
- 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
- 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
四、变量与数据类型
1.变量
- 变量是程序中最基本的存储单元,程序执行中数值可变的;
就像初中数学学的y=x一样,x是变量是可变的
2.数据类型
按照数据类型分可以分为俩大类{基本数据类型} {引用数据类型}
基本数据类型有8个
- 可分为数值型,字符型,布尔型
- 数值型又可分为整数型和浮点型
- 整数型有byte short int long
- 浮点型有float double
- 字符型有char
- 布尔型有boolean
引用数据类型可分为类,接口,组 - 分别是class,interface,[]
- 其中字符串String属于类
3.补(基本数据类型)
上述基本类型都有属于他们的占用存储空间和表述范围
注意:不可以0或非 0 的整数替代false和true
代码如下(示例):
/*
整型
*/
//byte 一个字节
byte a = 127;//-128-127
System.out.println(""+a);
//short 俩个字节
short b = 32767;
//int 四个字节
int c = 1;
//long 八个字节
long d = 200;
/*
浮点型
*/
//float 四个字节
float e = 0.5f;
// double 八个字符
double f = 10;
/*
字符型
*/
//char 俩个字符
char j = 'a';
/*
布尔型
*/
//boolean 只允许true false
五、进制输入
- 二进制:0,1 ,满2进1.以0b或0B开头。
- 十进制:0-9 ,满10进1.
- 八进制:0-7 ,满8进1. 以数字0开头表示。
- 十六进制:0-9及A-F,满16进1. 以0x或0X开头表示。此处的A-F不区分大小写
代码如下(示例):
//二进制以0B开头
//八进制以0开头
//十六进制以0x开头
int z = 0B11;//二进制
System.out.println(z);
int x = 011;//八进制
int y = 0X111;//十六进制
六、ASCLL
- 最早的编译表ASCLL表 只能表示英文
- 中国用的就是GBK GB2312
- 后来的诞生了unicode编码表,里面包含各个国家的文字字符
- utf-8是一种可变长度的编码表
七、数据类型的转换
1.普通数据类型转换
- byte,short,char不可转换,Boolean不参与转换,
- 排序为int<long<float<double
- 混合运算也可以转换
注只能从低的转成高的,不能从高的转化成低的
代码如下(示例):
int a = 10;
long b = a;
float c = a + b;
2.强制数据转换
数据类型大的转小的强制转换
int f = (int) e;
可能会出现俩个问题,
(1)会溢出
(2)会精度降低
代码如下(示例):
long e = 1000000000l;
int f = (int) e;//强型转换
int j = 258;
byte k = (byte) j;//输出必定出错因为byte最大只有127而这个数值却超标
System.out.println(k);
float x = 10.5f;
long y = (long)x;//输出结果为10因为整形这里没有四舍五入只能退一,数字多大输出多大
System.out.println(y);
八、赋值
需要掌握的有许多
1.a+=b
这个可以转换为a=a+b
代码如下(示例):
/*赋值
* 注意俩边的值的类型要相匹配
* a+=b ---->a=a+b */
short s = 3;
// s = s+2; 左边是short,右边加二加的是int类型则不响应
s += 2;//这个相等于s=s+2; 但是他相当于隐世转换;
System.out.println(s);
2.=与==的区别
=指的是赋值==一般用在if等表示条件
代码如下(示例):
/*区别= 与 ==*/
boolean A = false;
if (A == true) { //这里==表示条件
System.out.println("输出为真");}
else{
System.out.println("输出为假");
}
if (A = true) { //这里=表示赋值,将true赋值给了A
System.out.println("输出为真");}
else{
System.out.println("输出为假");
}
3.注:赋值时俩边的值的类型要相匹配
4.条件运算
代码如下(示例):
/*思考*/
int B = 1;
B *= 0.1;
System.out.println(B); //因为B为int数据,所以0.1为0
B++;
System.out.println(B);
/*条件运算符*/
int a = 10,b = 5;
int c = (a<b)?a:b;//如果a<b则输出a,否则输出b
System.out.println(c);
九、比较运算与逻辑运算
1.比较运算
- 比较运算符中++a与a++的区别
- ++x先运算在赋值
- x++先赋值在运算
代码如下(示例):
/*比较运算符*/
/*++xx先运算在赋值*/
int x,y;
x = 5;
y = ++x;
System.out.println(y);
System.out.println(x);
/*x++先赋值在运算*/
int a,b;
a = 5;
b = a++;
System.out.println(a);
System.out.println(b);
/*运算*/
int d,f,e;
d = 10;
f = 5;
e = 20;
System.out.println(d == f);
String j = "abc";
String k = "abc";
System.out.println(j == k);
2.逻辑运算
- $ 与运算,俩个都为true才为true
- &&短路与运算,第一个为false则不执行下一语句
- | 或运算,俩个有一个为true结果才为true
- ||短路或运算,第一个为true则不执行下一语句
- ! 非运算, A为true,则!A为false
- 异或运算,相同为false,不同为true
注:&和&& 与运算和短路与运算的区别 $$就像短路一样,d++不实现
代码如下(示例):
/*逻辑运算
* & 与运算,俩个都为true才为true
* &&短路与运算,第一个为false则不执行下一语句
* | 或运算,俩个有一个为true结果才为true
* ||短路或运算,第一个为true则不执行下一语句
* ! 非运算, A为true,则!A为false
* ^ 异或运算,相同为false,不同为true
* */
// &与运算
System.out.println(d < f & f < e);//false&true false
System.out.println(d < f & f > e);//false&false false
System.out.println(d > f & f < e);//true&true true
/*&和&& 与运算和短路与运算的区别 $$就像短路一样,d++不实现 */
System.out.println(d < f && d ++ < f); //遇见第一个false就短路了,后面的d++就不再执行了
System.out.println(d);
System.out.println(d < f & d ++ < f);
System.out.println(d);
System.out.println(e > f && e ++ < d); //遇见第一个true,所以后面e++继续执行
System.out.println(e);
十、位运算
1.位运算定义
- 位运算:二进制比特位上的操作
- <<左移 >>右移 >>>无符号右移就是不需要关心高位置的符号,如果有影响只需要在符号位补0
代码如下(示例):
/*
*位运算 二进制比特位上的操作
* */
int a = 2;
System.out.println(a<<1); //2换为二进制则是10,左移一位表示100,即为4相当于乘2
/*
* <<左移 >>右移 >>>无符号右移就是不需要关心高位置的符号,如果有影响只需要在符号位补0
* */
int b = 8;
System.out.println(b>>1);//输出为4
//& 二进制与,11得1 01得0 00得0
System.out.println(3&4);//因为前后都是数据类型不是逻辑类型 3的二进制为011,4的二进制为100,俩个一与结果为0
//| 二进制或 10得1 11得1 00得0
System.out.println(3|4);// 011 | 100=111结果为111即7
//^ 二进制异或 11得0 00得0 10得1
System.out.println(3^4);// 011 ^ 100=111即为7
2.二进制 底层应用
由俩个数交换遍历发现二进制底层算法的快速应用
代码如下(示例):
/*
* int 型俩个数字进行交换*/
int a = 5,b = 10;
int c;
c = a;
a = b;
b = c;
System.out.println("a="+a);
System.out.println("b="+b);
//新方法用底层的运算规则,异或
//用俩个数异或后的结果与其中一个值进行异或操作,其值会等于另一个值
int x = 5,y = 10;
x = x^y;
System.out.println(x);
y = x^y;
System.out.println(y);
x = x^y;
System.out.println(x);
//快速算出二的三次方
int z = 2;
System.out.println(z<<2);
十一、输入输出
注:在自己的类中用别人的类,需要使用import导入别的类
代码如下(示例):
package datatype.day1;
//在自己的类中用别人的类,需要使用import导入别的类
import java.util.Scanner;
public class Input {
public static void main(String[] args) {
//创建一个叫做Scanner对象的类,传入一个叫做输入流的对象
Scanner cs = new Scanner(System.in);
System.out.println("请输入年龄:");
double age = cs.nextDouble();
System.out.println("请输入姓名:");
String name =cs.next();
System.out.println("姓名:"+name+" 年龄:"+age);
}
}