java 第一天
博客专区 > ddyBlack 的博客 > 博客详情
java 第一天
ddyBlack 发表于3年前
java 第一天
  • 发表于 3年前
  • 阅读 11
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

摘要: java 基础学习


问题:九宫格不理解

1、 二进制补码表示数据范围和位数有关,如果位数是n

那么范围就是-2(n-1)到2(n-1)


java  中整数(int) 是采用的32位的二进制补码表示

java   int  的范围是 -2(31) ---2(31)-1  


2、负数=正数取反+1  

正数=负数取反+1

---------------------------------------------------

数据类型:1byte  ---8bit

 1kb    --- 1024 byte

 1M

 1G

 1T

 

整数类型:

byte   8位 (1个字节)  -128--127

short  16位 (2个字节)

int    32位

long   64位     (定义long  x = 2323342L)  后边加大L

直接一个数字,称为数字字面量,整数的字面量默认为int型

浮点类型:

float     32位

double   64位

float型以f结尾, 不写默认为double报错

字符类型:

char    16位无符号整数   任何的char都是一个整数

数字‘0’ ---> 48  

   'a' --->  97

'A' --->  65

转义字符:

\n  换行

\t  制表符

\\  单斜杠

小数默认是double类型

boolean类型:

true 和false  

注:和c不一样   c 0为假, 非0为真

类型转换:  大范围到小范围  (强制转)  会出现溢出或精度丢失

/** */ 文档注释    名称,时间,作者

——----------------------------------------------------

   控制语句: 注意continue 和break 的用法



foreach 语句:  for循环的特殊简化版本

int arr[] ={7,10,1};

for(int x: arr){

System.out.println(x+"\t");

}

外层循环控制行,内层循环控制列

双层for循环运行时间问题

-----------------------------------------------------

程序运行时间:

第一种是以毫秒为单位计算的。 

  Java代码 

  //伪代码 

  long startTime=System.currentTimeMillis();   //获取开始时间 

  doSomeThing();  //测试的代码段 

  long endTime=System.currentTimeMillis(); //获取结束时间 

  System.out.println("程序运行时间: "+(endTime-startTime)+"ms"); 

第二种是以纳秒为单位计算的。 

  Java代码 

  //伪代码 

  long startTime=System.nanoTime();   //获取开始时间 

  doSomeThing();  //测试的代码段 

  long endTime=System.nanoTime(); //获取结束时间 

  System.out.println("程序运行时间: "+(endTime-startTime)+"ns"); 


----------------------------------------------

数组排序:

冒泡:

//对比相邻的元素值,满足条件就交换元素值,较小的移到前面,较大的移到后边

for(int j=0;j<array.length-i;j++){

if(array[j]>array[j+1]){

int temp = array[j];

array[j] = array[j+1];

array[j+1] = temp;

}

System.out.print(array[j]+" ");

}

直接插入:

//直接插入排序

int tmp;

int j;

for(int i=0;i<array.length;i++){

tmp = array[i];  //保存临时变量

for(j=i-1;j>=0&&array[j]>tmp;j--){

array[j+1] = array[j];// 第j-1个数大于第j个数  则交换

}

array[j+1] = tmp;  //在排序位置插入数据

}

printArray(array);

-----------------------------------------------------------

类和对象


1.类  

把具有相同属性和相似行为的一类事物成为类。

相同的属性  -------  用数据表示即可

相似的行为  -------  用方法or函数表示即可

找出相似的行为和相同的属性的过程称为抽象

通过封装行为构成类 -----

class 类名{属性、行为}  ---->  封装

2.对象

类的实例就是对象

创建对象:   类名  对象(引用)名 = new 类名;

3.成员

成员变量:类的属性

成员方法: 类的行为

暂时而言:  类中只能放成员,成员是并列的,不分先后

成员必须通过对象访问  用. 运算符


主要是讲谁去做什么。。。


4.初始化(成员变量初始化)

a.成员变量有默认值。

b.构造函数------> 对象创建成功之后就有初始值

b.1 一个成员函数,该函数函数名称和类名相同

b.2 无任何返回类型,连void都没有

b.3 创建对象的时候会自动调用,并且创建一个对象就会调用一次

可以通过传参数来创建属性不同的对象

b.4 就目前而言:初始化成员

b.5 如果一个类没有构造函数,那么jvm就会给类

自动添加一个无参数的构造函数

pulic 类名(){

}

如果认为的写了构造函数,则默认就不存在了

class Person{

Person(double a,String name){

}

}

c.函数重载:

c.1同一个类中的一组函数

c.2 这组函数,函数名称都相同

c.3 参数不同(类型不同,个数不同,类型个数都不同)

c.4 与函数的返回值类型不同无关

c.5 在调用的时候,会根据类型和个数自动匹配

但是这个匹配不一定是精确的,先找最精确的在找次精确的,不需要认为转换

d.构造函数的重载

解决创建不同参数的对象

e.定义初始化

定义的时候直接赋值。所有对象的某个属性值都一样的时候

定义初始化块,  先执行定义初始化然后再构造函数

5.内存分配

创建对象的过程的内存分配问题

堆  对象的实例

栈  引用名指向 ----> 对象 

方法区 ---> 类的信息都在此

6.this 引用(当前对象的引用)


package hanhan;

public class Demo4_5_1 {
	/**
	 *  使用for循环输出空心菱形
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		printHollowRhombus(8);
	}
	public static void printHollowRhombus(int size){
		if(size%2 ==0){
			size++;    //计算菱形大小
		}
		
		for(int i=0;i<size/2+1; i++){
			for(int j=size/2+1;j>i+1;j--){
				System.out.print(" ");  //输出左上角位置的空白
			}
			
			for(int j=0;j<2*i+1;j++){
				if(j==0 || j==2*i){
					System.out.print("*");  //输出上半层的边缘
				}else {
					System.out.print(" ");  //输出上半层的留白
				}
			}
			System.out.println("");
		}
		
		for(int i=size/2+1;i<size;i++){
			for(int j=0;j<i-size/2;j++){
				System.out.print(" ");
			}
			for(int j=0;j<2*size-1-2*i;j++){
				if(j==0|| j==2*(size-i-1)){
					System.out.print("*");
				}else{
					System.out.print(" ");
				}
			}
			System.out.println("");
		}
	}
}


----------------------------------------------------

package hanhan;
/*
 * 杨辉三角和求近似e =1 + 1/2! + 1/3!
 */
public class YanghuiTriangle {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		double e=1.0,temp=1.0,n=2.0,h=1.0;
		do{
			temp=temp/h;
			e=e+temp;
			n+=1;
			h=h*n;
			
		}while(n<20);
		System.out.println(e);
		
		
		
	/*	int triangle[][] = new int[8][];
		for(int i=0;i<triangle.length;i++){
			triangle[i] = new int[i+1];
			for(int j=0;j<=triangle[i].length-1;j++){
				if(i==0||j==0||j==triangle[i].length-1){
					triangle[i][j]=1;
				}else{
					triangle[i][j]=triangle[i-1][j]+triangle[i-1][j-1];
				}
				System.out.print(triangle[i][j]+"\t");
			}
			System.out.println();
		}
		*/
	}

}

-----------------------------------------------------------
package eg;

import java.util.Scanner;

/*
 * 酒店前台客房管理:
 * 酒店有12层,每层有10个房间,可以通过命令输入命令来为客人办理入住和退房手续
 * 可以输入一下命令进行入住,退房机查询操作
 * (1)search():查询所有房间的状态 
 * (2)in(房间号  姓名):客人入住
 * 		命令in:  
 * 		请输入客人入住的房间号
 * 		请输入房间顾客的名字
 * (3)out(房间号):客人退房
 * (4)quit 退出
 */
public class Exambase {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String[][] rooms = new String[12][10];
		//字符串数组当中如果没有初始化,则默认为null
		
		System.out.println("欢迎来到酒店:");
		System.out.println("命令:search查询,init初始化,in入住,out退房,quit退出");
		Scanner scan = new Scanner(System.in);
		
		while(true){
			String command = scan.next();
			if("init".equals(command)){
				init(rooms);
			}else if("search".equals(command)){
				search(rooms);
			}else if("in".equals(command)){
				in(rooms);
			}else if("out".equals(command)){
				out(rooms);
			}else if("quit".equals(command)){
				break;
			}
		}
	}
	
	
	//办理退房
	public static void out(String[][] rooms){
		System.out.println("请输入房间号");
		Scanner s = new Scanner(System.in);
		int roomNo = s.nextInt();
		int floor = roomNo / 100; //第几层
		int room  = roomNo % 100; //第几个房间
		if(floor<1||floor>12||room<1||room>10){
			System.out.println("房间号输入有误:请输入in重新输入");
			return;
		}
		if("empty".equals(rooms[floor-1][room-1])){
			System.out.println("房间已经有人入住,请输入in重新操作:");
			return;
		}
		rooms[floor-1][room-1] = "empty";
		System.out.println("退房成功");
		
	}
	
	//办理入住
	public static void in(String[][] rooms){
		System.out.println("请输入房间号:");
		Scanner s = new Scanner(System.in);
		int roomNo = s.nextInt();
		int floor = roomNo / 100; //第几层
		int room  = roomNo % 100; //第几个房间
		if(floor<1||floor>12||room<1||room>10){
			System.out.println("房间号输入有误:请输入in重新输入");
			return;
		}
		if(!"empty".equals(rooms[floor-1][room-1])){
			System.out.println("房间已经有人入住,请输入in重新操作:");
			return;
		}
		System.out.println("请输入住房姓名:");
		String name = s.next();
		rooms[floor-1][room-1] = name;
		System.out.println(name+"入住成功");
			
	}
	//查询房间的状态
	public static void search(String[][] rooms){
		for(int i=0;i<rooms.length;i++)
		{
			//打印房间号
			for(int j=0;j<rooms[i].length;j++){
				if(i<9){
					System.out.print("0");
				}
				int roomNo=(i+1)*100+j+1;
				System.out.print(roomNo+"\t");
			}
			System.out.println();
			//打印房间状态
			for(int k=0;k<rooms[i].length;k++)
			{
				System.out.print(rooms[i][k]+"\t");
			}
			System.out.println();

		}
	}
	//初始化所有的房间
	public static void init(String[][] s){
		for(int i=0;i<s.length;i++){
			for(int j=0;j<s[i].length;j++)
				s[i][j] = "empty";
		}
		System.out.println("初始化完毕。。。");
	}
}


共有 人打赏支持
粉丝 2
博文 3
码字总数 5888
×
ddyBlack
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: