java基础语法
在开始讲基础语法的时候,首先要明白这些代码要写在那里,在创建一个类的时候第一个要先写一个包,所以要先去了解包是什么?
包机制
-
**包的定义:**相当于一个文件夹的目录文件,表明路径
-
包的语法:
package pkg1.pkg2;
-
在一些公司中一般就是公司域名倒置作为它的包名,例如
com.baidu.www
-
为了能使用某个包,在Java中导入包时用import
import java.io.IOException;//特殊有加*的,指把包内的所有东西导入
标识符
在Java所有的组成部分都需要名字。类名,变量名,方法名都被称为标识符。所以我们必须要
注意一些标识符的命名规则:
-
所有的标识符都应该是以字母,美元符,下划线开始的
-
非首字符比首字符多一个数字
-
不能使用关键字作为变量名和方法名
-
标识符的大小写有区分
-
可以使用中文命名,但是一般不用,最好不要用拼音会显示的low
举个例子:ting == listen 第一个正常程序员第一眼绝对看不出这要表达什么东西,第二个就很容易识别
下面为一些标识符的判断
String 王者荣耀 =“倔强青铜” √
String name ="qinjiang"√
String name2 ="qinjiang"√
String _name2 ="qinjiang"√
String 1_name ="qinjiang"×
你以为可以开始语法的讲解了吗?其实不然,还要继续做一些铺垫
在语法中经常要定义一些对象,这些对象是有类型的,所以接下来开始描述数据类型
数据类型
数据类型有两类
基本数据类型包括:整数型,浮点型,字符型和逻辑型
**引用类型:**暂时还没总结以后再说
八大基本数类型
整数
int num = 10 //最常用
byte num2 = 20
short num3 = 30
long num4 = 40L //long类型要在数字后面加个L
浮点数(小数)
float num5 = 50.1F //float类型要在数字后面加个F
double num6 = 60.21231 //常用
字符
char name =‘a’//字符只能是单个文字或者字母
字符串用String
String不是关键词是类
String name =“小明”
布尔值
boolean flag = ture
boolean flag = false
一定要记住:String不是基本数据类型,它是一个类
接下来就要开始拓展一些内容了,很重要,很重要,很重要
数据类型的拓展
整数
进制
二进制ob 十进制 八进制0 十六进制0x
float 有限 离散 舍入误差 大约 接近
double
最好避免完全使用浮点数进行比较
换句话来说就是它是个大约值,有误差最好不要直接比较,如果想要去比较小数的大小的话,可以使用math包的方法
字符拓展
强制转换
所有的字符本质还是数字
编码 Unicode 表:97=a 65=A 两个字节 表示U0000-UFFFF
所以可以把字符转换为数字,具体的实现如下
String类型的拓展(String不是基本数据类型)
在这段代码中,都定义了一个内容为hello world的String变量,理论上来讲他们应该是相等的,但是使用了new这个用法,那么比较就不单单是比较他们的值了,还要去比较他们所在内存的位置,只有他们的位置和内容一样才能相等。这时就肯定有小伙伴问了难道就不能比较了嘛?那肯定不是啦,一般字符的比较时可以调用一个equals的方法来比较。不多说,来代码
public class Demo {
public static void main(String[] args) {
String a = "hello";
String b = "hello";
System.out.println(a.equals(b));
}
}
布尔值拓展
boolean flag = ture;
if (flag==true){} //新手
if (flag){} //老手
//代码要精简易读
兄弟们,虽然说这人人都想着偷懒,但是作为初学者还是安安心心的走新手路线好一点。眼高手低,代码之大忌。
类型的转换
强制转换
当类型从高等级转换到低等级时叫做强制转换
格式:(类型)变量名
int i = 128;
byte = (byte)i;
输出结果
128 -128(原因为byte的范围为127——-128,溢出)
自动转换
当类型从低等级转换到高等级时叫做自动转换
格式:直接写
int i = 128;
double b = i;
最后呢总结一下注意点
-
不能对boolean值进行转换
-
不能把对象类型转换为不相干的类型
-
在高转低的情况叫强制转换
-
转换时可能会出现溢出或者精度问题
-
在操作数字较大时要注意溢出问题(数字之间可以用下划线分割)
下面这是你们未来的年薪,结果运算的时候不小心超出了int类型的边界,给你们的工资变成负数,从赚钱变为了还债,所以代码一定要考虑溢出
int money = 10_0000_0000;
int years = 20;
int total = money*years;//-1474836480,溢出
long total2 = money*years;//默认为int,在转换前出问题了
long total3 = money*((lng)years);
变量,常量,作用域
这部分很重要,一定要去理解
变量
顾名思义,变量就是一个可以改变的量
局部变量
顾名思义就是局限于一部分的量,一般只能作用与一个方法内,而且必须声明和初始化
是不是有点看不懂了,所以上代码
public void add(){
int i=10;//局部变量,作用与方法内部,其作用范围也在方法内
}
实例变量
从属于对象,即在使用时需要创建一个对象来调用这个变量
兄弟们,是不是又看不懂了,让我来给你们解释一下,实例变量呢就是一个对象的附庸,就好比人,它身上的属性有年龄和名字,那么你要用他的名字和年龄,是不是应该先去找一个人,然后标明这个年龄和名字是从属于这个人的,下面的代码就是这个意思
public class Demo{
//就是说有一个大群体,在Java里面叫类,然后这个类的共有属性是name和age
String name;
int age;
public static void main(String[] args) {
//你要调用这两个属性,那么你必须要先去创建这个类的对象吧,这就是java里面的new对象
Demo demo = new Demo();
//有了这个对象才能去调用他的属性
System.out.println(demo.age);
System.out.println(demo.name);
}
输出结果 0 null
类变量
从属于类的变量,即在该类中可以直接使用(类变量前面有static)
public class Demo {
//实例变量
String name;
int age;
//类变量static
static double salary = 2500;
public static void main(String[] args) {
Demo demo = new Demo();
System.out.println(demo.age);
System.out.println(demo.name);
System.out.println(salary);
}
}
常量
初始化后不能在改变的值!
一般用大写字母命名
final 常量名 = 值;
final double PI = 3.14;//final只是一个修饰的作用表明该值为一个常量,对于位置无硬性要求
作用域
就是指他们作用的范围
基本的运算符
基本运算符
算术运算符:+,-,#,/,%,++,–,
赋值运算符:==
关系运算符:<,>,>=,<=,==,!=
逻辑运算符:&&(与),||(或),!|(非)
位运算符:&,|,~,>>,<<,>>>
条件运算符?:
扩展赋值运算符:+=,-=,**=,/=*自增自减运算符
b=a++(先给b赋值,再让a+1)c=++a(先让a+1,再给c赋值)
Math.pow(幂运算)
这里先自行了解一下
现在基础的东西已经铺垫完成,开始我们的正式内容
用户交互Scanner
在我们Java中要想输入时便要用到Scanner,在使用Scanner的时候一定要记得导入包java.util.Scanner
开始说它的基本语法
Scanner scanner = new Scanner(System,in);
开始展示代码
public class Demo01 {
public static void main(String[] args) {
//从键盘接收数据
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方式接收");
//判断是否输入
if(scanner.hasNext()){
String str = scanner.next();
System.out.println("输出的内容为" + str);
}
scanner.close();
}
//注意:scanner用完以后一定一定要关闭它
}
这时候肯定有人看不懂if语句的东西了,首先要知道if语句是表示判断的,具体用法后面在将,先看懂代码,开始去认识next方法,在Scanner类中,next()和nextLine()方法来获取输入的字符串,判断的话用hasNext()和hasNextLine()判断是否还有输入的数据
next()和nextLine()的区别
- next()时接收下一个字符串,当输入空格时就会视为结束
- nextLine()接收下一行字符串,当输入回车时视为结
接下来开始进阶代码
public class Demo05 {
public static void main(String[] args) {
//我们可以输入多少个数字,并且求和与平均数,每输入一个数字用回车来确认,通过输入非数字来结束输出结果
Scanner scanner = new Scanner(System.in);
double sum = 0;
int size = 0;
while(scanner.hasNextLine()){
double x = scanner.nextDouble();
sum = sum + x;
size++;
System.out.println("当前输入的数字的和为" + sum + "当前输入的数字个数为" + size);
}
System.out.println("当前输入的数字总和" + sum);
System.out.println("当前输入的数字的平均数为" + sum/size);
scanner.close();
}
}
ze = 0;
while(scanner.hasNextLine()){
double x = scanner.nextDouble();
sum = sum + x;
size++;
System.out.println(“当前输入的数字的和为” + sum + “当前输入的数字个数为” + size);
}
System.out.println(“当前输入的数字总和” + sum);
System.out.println(“当前输入的数字的平均数为” + sum/size);
scanner.close();
}
}
这里解释一下while,while是循环语句,在该代码中,只要有数字他就会一直执行,如果你输入的不是数字那么就会跳出循环执行下一步
未完待续。。。。