1、java语言的特点
简单、面向对象、分布式、健壮、安全、中性架构跨平台、超强可移植性、高性能、多线程。
java是编译性语言,python是解释性语言,一般来说解释性语言比编译性语言慢。
2、标识符规则
1)由数字、字母、下划线、$组成,且不能以数字开头
2)大小写敏感
3)不能与java关键字冲突
3、java注释
1)单行注释,//
2)多行注释,以/*开头,以*/结尾
3)文档注释,/**开头,*/结尾
4、导包
1)不需要导包的情况如下,其他情况都需要导包:
①同一个包下面的不需要导包
②java.lang包下面的类都不需要导
2)导包规则:
①导包语句必须在packet和class中间
②导包语句:import java.util.Date;
5、变量
public class VarDemo {
public static void main(String[] args) {
int a ; //变量的声明
a = 3 ; //变量的赋值
int b = 4; //变量的声明并同时进行初始化
//变量的第一次赋值称为初始化,其他的都叫赋值
//声明在方法中的变量叫:局部变量
//方法的参数也是局部变量
//局部变量在使用前必须进行初始化
//
}
}
6、数据类型
1)基本类型(8种)
boolean、char、byte(8位,有符号,-128到127)、short(16位)、int(32位)、double(64位)long(64位)、float(32位)
2)引用类型
public class TypeDemo {
public static void main(String[] args) {
double d =2.6;
d = d-2.0;
//浮点型的运算是不精确的,不要用这个结果来判断是否相等
System.out.println(d); //0.6000000000000001
System.out.println(d == 0.6); //false
//强制转换
//1 小范围到大范围的可以自动转换
//byte<short<int<long<floate<double
int a =3;
long b = a;
//2 整型到浮点型的可以自动转换
double c = a;
//3 在范围内的字面量可以类型转换
//整数的默认类型是int,小数的默认类型是double
//字面量,固定不变的量,可以看做是常量
byte bb = 1;
//byte bb2 = 128;-----128超过了byte范围,不能转,报错
byte bb3 = (byte)128;//强制转换后是-128,byte范围在-128--127之间
double d1 = 3.4;
double d2 = 3.8;
int d3 = (int)d1; //d3=3
int d4 = (int)d2; //d4=3
}
}
7、运算符
public class YunSuanFu {
public static void main(String[] args) {
//java中所有的关键字都小写
//+:可以连接字符串,任何类型和字符串相加都将变成字符串类型
String str = "aaa"+"bbb"+123;
System.out.println(str); //aaabbb123
// 5/2=2 5%2=1
// 0%1=0, 0对任何数取余都是0
// m%n [0~n-1]即[0,n)
//短路与第一个表达式是false,后面表达式就不看了,结果false
//短路或,第一个表达式是true,后面表达式就不看了,结果true
// & | 逻辑与和逻辑或
//a++ ;==> a= a+1;
int x = 3>4?5:6; //3目运算符,条件运算符,结果6
}
}
8、跳转
1)if语句
public class IfDemo {
public static void main(String[] args) {
//分支语句if必须有,else if可以有0到n个,else有0或1个
//if只会走一条分支
int x = 10;
if (x < 8) {
System.out.println("a");
} else if (x < 6) {
System.out.println("b");
}
}
}
2)break、continue、return
continue :终止本次循环,继续下次循环
break:跳出最内侧循环
return:直接跳出方法体
3)实例
●给5个整数,输出最小数
public class IfDemo {
public static void main(String[] args) {
int a = 83;
int b = 4;
int c = 55;
int d = 96;
int e = 22;
int min = a;
if (min > b) min = b;
if (min > c) min = c;
if (min > d) min = d;
if (min > e) min = e;
System.out.println(min);
}
}
●打印99乘法表
public class IfDemo {
public static void main(String[] args) {
//99乘法表
//外层控制行
for (int i = 1; i < 10; i++) {
//内层控制列
for (int j = 1; j < i + 1; j++) {
System.out.print(j + "*" + i + "=" + i * j + "\t");
}
System.out.println("");
}
}
}
●求1-100间质素
public class IfDemo {
public static void main(String[] args) {
//1-100质素
for(int i=2;i<=100;i++){
boolean flag=true;//假设所有的数字都是素数
for (int j=2;j<i;j++)
{
if (i%j == 0) {
flag = false;
break;
}
}
if (flag == true) {
System.out.println(i);
}
}
}
}
练习:完成下面程序,是程序运行结果分别输出2个、7个、13个hello java
public class LogicJump {
//结果输出2个hello java
public static void main(String[] args) {
for (int i=1;i<=10;i++){
if(i%3 == 0)
{
}
System.out.println("hello java");
}
}
}
依次在if语句中补充break、continue、System.out.println("hello java");
9、数组
import java.util.Arrays;
public class ArrayDemo {
public static void main(String[] args) {
//数组只能存相同类型的数据、数组大小固定
//1 数组声明
int[] arr;
//2 数组的初始化
//1)静态初始化
int[] arr1 = {1,2,3,4};
//2)动态初始化
int[] arr2 = new int[4];//元素默认值是0000---
//整数类型(byte、short、int、long) 默认值都是0
//浮点类型(float、double) 默认值0.0
//boolean 默认false
//引用类型 默认null
//char 默认'\u0000'
//数组、字符串 null
//java中只有8中基本类型,其他都是引用类型
//3 数组元素的初始化
int b = arr1[2];
//4 数组的长度
int c = arr1.length;
//5 数组元素的初始化
arr2[3] = 3;
for (int i=0;i<arr2.length;i++)
{
arr2[i] = i+5;
}
//6打印数组
// 方法1
for (int i=0;i<arr2.length;i++){
System.out.println(arr2[i]);
}
//方法2,借助java.util.Arrays包中的Arrays类
System.out.println(Arrays.toString(arr2));
}
}
10、随机数
import java.util.Random;
public class RandomDemo {
public static void main(String[] args) {
//创建了一个Random对象
//int a = 3;
Random ran = new Random();
//从0-9之间随机取出一个数 ran.nextInt(n),表示0到n-1间随机去一个数
int x = ran.nextInt(10);
}
}
练习:实现双色球:红球33选6,篮球13选1
import java.util.Arrays;
import java.util.Random;
public class TwoBall {
public static void main(String[] args) {
Random ran = new Random();
int blueBall = ran.nextInt(17);
System.out.println("篮球"+blueBall);
int[] redBall = new int[6];
for (int i=0;i<redBall.length;i++)
{
redBall[i] = ran.nextInt(33+1);
//去重
for (int j =0;j<i;j++){
if (redBall[j] == redBall[i]){
i = i-1;
break;
}
}
}
System.out.println("红球"+Arrays.toString(redBall));
}
}
11、字符串常用方法
import java.util.Arrays;
public class StrDemo {
public static void main(String[] args) {
String str = "123456789";
//str.lastIndexOf("56"); 最后一次出现的位置
//从字符串str中查找字符串34第一次出现的位置,返回的是下标,找不到返回-1
int n = str.indexOf("34");
System.out.println(n);
//截取字符串str,从下标为1开始到最后,包括下标1
String s2 = str.substring(1);
System.out.println(s2);
//截取字符串str,从下标为1开始到下标7,包括下标1,不包括下标7,前闭后开
String s3 = str.substring(1,7);
System.out.println(s3);
//判断字符串str是否以34开头 endWith
boolean b1 = str.startsWith("34");
System.out.println(b1);
//去出字符串上两端的空白
String s33 = "3 4 5 \n";
String s4 = s33.trim();
System.out.println(s4);
//字符串比较
System.out.println(str.equals("666"));
//根据字符串1 拆分字符串s5 ,拆分结果以数组返回
String s5 = "a1b1c1d1f218899qq";
String[] ss = s5.split("1");
String[] sss = s5.split("\\d");
System.out.println(Arrays.toString(ss));
System.out.println(Arrays.toString(sss));
}
}
12、面向对象
//类的声明
public class Student {
//成员变量
//成员变量在类中,方法外
//成员变量可以在类中任意地方访问
//成员变量会有默认值
String id;
String name;
int age;
//每个类都必须有构造器(也叫构造方法),如果没有为这个类写构造器,那么java编译器会给这个类提供一个默认的构造器
// (public Student(){} 公开空实现的构造器),如果为这个类写了构造器,那么java编译器不再提供默认构造器
//1 构造器名字必须和类型相同
//2 构造器没有返回类型
//3 new创建对象时会创建构造器
public Student(){
}
public Student(String str){
name = str;
}
//[修饰符] 返回类型 方法名(参数类型 参数名,参数类型 参数值...)
//方法没有返回值用void
//方法中不能嵌套方法
public void study(String course){
System.out.println("爱学习"+course);
}
public int add(int x,int y){
int z = x+y;
return z;
}
}
public class TestSudent {
public static void main(String[] args) {
Student s1 = new Student();
s1.name = "张三";
s1.age = 18;
System.out.println(s1.name + "--" + s1.age);
s1.study("zhongwen");
}
}
13、this
this代表当前对象本身,类似代词中的我
常用来区别实例变量(即成员变量)和局部变量
练习:写一个Person类,包括以下属性:String name;int age;char gender;Person partner,为Person类写一个marry(Person p)方法,代表当前对象和p结婚,若可以结婚则输出共和信息,否则输出不能结婚原因。要求另一个类中写一个主方法来测试上面程序。以下情况不能结婚:(1)同性、(2)未达到法定年龄,男<22,女<20、(3)某一方已婚
public class Person {
String name;
int age;
char gender;
Person partner;
public Person(String name, int age, char gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
public void marry(Person p){
if (p.gender == this.gender){
System.out.println("万年基友,搞啥呢!");
return;
}
if((p.gender == 'm' && p.age <22) || (p.gender == 'f' && p.age <20)){
System.out.println("老牛吃嫩草");
return;
}
if((this.gender == 'm' && this.age <22) || (this.gender == 'f' && this.age <20)){
System.out.println("小学生,凑什么热闹!");
return;
}
if(this.partner !=null){
System.out.println("找小三的下场可惨了");
return;
}
if(p.partner !=null){
System.out.println("你成了别人的小三");
return;
}
System.out.println("恭喜"+p.name + "和"+this.name+"发糖!");
this.partner=p;
p.partner=this;
}
}
更多内容欢迎关注微信公众号查看